sql-server - ultimo - sql server right string
SQL Server 2005 Generated Create Table Script no funciona (7)
Con la excepción de la instrucción use [MyDatabase]
(la cambié a tempdb
), esta instrucción se ejecuta correctamente cuando la ejecuto contra SQL Server 2005 utilizando Microsoft SQL Server Management Studio.
Estoy en proceso de crear scripts de base de datos para una base de datos existente. Intento usar SQL Server para generar los scripts para mí, pero los scripts generados están fallando. Estoy usando la opción ''Script Table As''> ''CREATE To''> ''New Query Editor Window''. Luego cambio la tabla y los nombres de restricciones y ejecuto el script. Estoy perplejo. ¿Alguien puede ver el problema aquí?
Me sale este error:
Msg 170, Level 15, State 1, Line 17
Line 17: Incorrect syntax near ''(''.
El SQL generado:
USE [MyDatabase]
GO
/****** Object: Table [dbo].[MyTable2] Script Date: 01/06/2009 14:40:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTable2](
[id] [int] IDENTITY(1,1) NOT NULL,
[u_id] [int] NOT NULL,
[prog_number] [varchar](5) NOT NULL,
[trans_id] [varchar](50) NULL,
[code] [varchar](7) NULL,
[user_num] [char](9) NULL,
[is_found] [char](9) NULL,
[status] [char](1) NULL,
[status2] [char](1) NULL,
[inserted_timestamp] [datetime] NULL CONSTRAINT [DF_MyTable2_inserted_timestamp] DEFAULT (getdate()),
[s_id] [varchar](10) NULL,
[p_value] [char](4) NULL,
CONSTRAINT [PK_MyTable2] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
Copié / pegué esta declaración SQL exacta y se ejecutó correctamente para mí. Lo único que puedo pensar es que tiene algo resaltado y está ejecutando solo esa parte del mismo (que puede no ser una declaración completa).
Obtengo exactamente el mismo problema cuando uso SQL Server Management Studio 2005 para generar una secuencia de comandos Crear tabla en una base de datos de SQL Server 2000.
Si está ejecutando esto en una base de datos de SQL Server 2000, creo que tiene un código que SQL Server 2000 no admite. Nunca he visto un script SQL SErver 2000 que configure la restricción como parte de la definición de la tabla.
Si su DB objetivo es SQL 2000, entonces se queja de esta línea
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
SQL 2000 solo es compatible
WITH FILLFACTOR = 90
Entonces, probablemente haya alguna configuración de compatibilidad que pueda usar para generar solo la sintaxis de SQL 2000
Tengo el mismo error. SQL Sever Management Studio se predetermina para generar scripts para SQL Server 2005, que no son compatibles con 2000.
Mi solución: en SQL Sever Management Studio, vaya a Herramientas >> Opciones >> Secuencias de comandos. En "Opciones generales de scripting", configure "Secuencia de comandos para la versión del servidor" en "SQL Server 2000".
Con Management Studio 2008, puede crear una secuencia de comandos que sea compatible con una versión inferior de SQL Server de esta manera:
Haga clic derecho en la base de datos >> Tareas >> Generar secuencias de comandos
En ese asistente, puede acceder a la opción "Script para la versión del servidor". Simplemente seleccione la versión de SQL Server en la que desea que se ejecute el script.