SQL Server兼容性问题
我在SQL Server 2000的石器时代编写了一个相当古老且非常长的查询。正如您可能怀疑的那样,它使用了旧的连接,比如c.address\u id=*b.address\u id 当我尝试运行它时,会弹出一条错误消息,指出我必须将兼容性级别设置为80才能启用这种类型的连接。我试过这样做: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中运行此查询而不重写它 它
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兼容是足够的理由,我。谈论痛苦。查看下一个主题的最佳实践部分:谢谢,我最终重写了它。至少它的性能和速度都要好得多。