Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server兼容性问题_Sql_Sql Server_Sql Server 2008_Tsql_Compatibility - Fatal编程技术网

SQL Server兼容性问题

SQL Server兼容性问题,sql,sql-server,sql-server-2008,tsql,compatibility,Sql,Sql Server,Sql Server 2008,Tsql,Compatibility,我在SQL Server 2000的石器时代编写了一个相当古老且非常长的查询。正如您可能怀疑的那样,它使用了旧的连接,比如c.address\u id=*b.address\u id 当我尝试运行它时,会弹出一条错误消息,指出我必须将兼容性级别设置为80才能启用这种类型的连接。我试过这样做: ALTER DATABASE SandBox SET compatibility_level = 80 但这似乎被忽视了。脚本大约有800行-那么有没有办法在MSSQL 2008中运行此查询而不重写它 它

我在SQL Server 2000的石器时代编写了一个相当古老且非常长的查询。正如您可能怀疑的那样,它使用了旧的连接,比如c.address\u id=*b.address\u id

当我尝试运行它时,会弹出一条错误消息,指出我必须将兼容性级别设置为80才能启用这种类型的连接。我试过这样做:

ALTER DATABASE SandBox
SET compatibility_level = 80
但这似乎被忽视了。脚本大约有800行-那么有没有办法在MSSQL 2008中运行此查询而不重写它

它需要一周运行两次,所以这次我不关心脚本的性能等等

欢迎提出任何建议。

我会重写它

话虽如此,这对我来说很有效

ALTER DATABASE ScratchPadDB
SET compatibility_level = 80

Select @@Version /* Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86)   Apr  2 2010 15:53:02   Copyright (c) Microsoft Corporation  Developer Edition on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (WOW64) (Hypervisor)  */

/**/


IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = N'dbo' and TABLE_NAME = N'Employee' and TABLE_TYPE = N'BASE TABLE' ) 
BEGIN 
DROP TABLE [dbo].[Employee] 
END 
GO


IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = N'dbo' and TABLE_NAME = N'Department' and TABLE_TYPE = N'BASE TABLE' ) 
BEGIN 
DROP TABLE [dbo].[Department] 
END 
GO

/**/ 


CREATE TABLE [dbo].[Department](
    [DepartmentUUID] [uniqueidentifier] NOT NULL,
    [TheVersionProperty] [timestamp] NOT NULL,
    [DepartmentName] [nvarchar](80) NULL,
    [CreateDate] [datetime] NOT NULL
    )


ALTER TABLE dbo.[Department] ADD CONSTRAINT PK_Department PRIMARY KEY NONCLUSTERED ([DepartmentUUID]) 
GO

ALTER TABLE [dbo].[Department] ADD CONSTRAINT CK_DepartmentName_Unique UNIQUE ([DepartmentName]) 
GO


CREATE TABLE [dbo].[Employee] ( 

    [EmployeeUUID] [uniqueidentifier] NOT NULL,
    [ParentDepartmentUUID] [uniqueidentifier] NOT NULL,
    [TheVersionProperty] [timestamp] NOT NULL,
    [SSN] [nvarchar](11) NOT NULL,
    [LastName] [varchar](64) NOT NULL,
    [FirstName] [varchar](64) NOT NULL,
    [CreateDate] [datetime] NOT NULL,
    [HireDate] [datetime] NOT NULL
    )

GO

ALTER TABLE dbo.Employee ADD CONSTRAINT PK_Employee PRIMARY KEY NONCLUSTERED (EmployeeUUID) 
GO


ALTER TABLE [dbo].[Employee] ADD CONSTRAINT CK_SSN_Unique UNIQUE (SSN) 
GO

ALTER TABLE [dbo].[Employee] ADD CONSTRAINT FK_EmployeeToDepartment FOREIGN KEY (ParentDepartmentUUID) REFERENCES dbo.Department (DepartmentUUID) 
GO


Select * from
dbo.Department d, dbo.Employee e
Where
d.DepartmentUUID =* e.ParentDepartmentUUID

目前还不确定您尝试了什么,但在当前脚本中执行它并不一定有效。如果您仍然难以设置兼容性级别,请尝试打开一个新的查询窗口并仅运行该部分。

为什么不将语法更新为当前的联接样式?即使在2000年,这些旧式联接也不是最新的,但引擎仍然允许它们。在某个时刻,您将在这里重写连接。事实上,你已经被迫运行在2k兼容是足够的理由,我。谈论痛苦。查看下一个主题的最佳实践部分:谢谢,我最终重写了它。至少它的性能和速度都要好得多。