لماذا يعمل T-SQL الجديد من SQL Server 2008 على قاعدة البيانات في وضع التوافق 80؟

StackOverflow https://stackoverflow.com/questions/3813351

سؤال

تجربة ميزات جديدة من T-SQL ، لقد واجهت لغزًا. فيما يلي بعض بناء الجملة الجديد المدعوم من SQL 2008 وأتوقع أن يعمل على قواعد البيانات المحددة لوضع التوافق 100 (أي 2008) ولا يعمل في الوضع Compat 80 (أي 2000). ومع ذلك ، فإن هذا يعمل مع وضع قاعدة بيانات تعيين وضع توافق SQL Server 2000 على مثيل SQL 2008 من الإصدار القياسي:

use MDS    -- this db is compat mode 80
go
CREATE TABLE dbo.Employees
(
Name VARCHAR(50) NULL,
Email VARCHAR(50) NULL,
Salary money NULL
) 
INSERT INTO dbo.Employees(Name, Email, Salary)
VALUES('Scott', 'scott@example.com', 50000.00),
  ('Jisun', 'jisun@example.com', 225000.00),
  ('Alice', 'al@example.com', 75000.00),
  ('Sam', 'sam@example.com', 45000.00)

SELECT * FROM dbo.Employees  
drop table dbo.Employees
هل كانت مفيدة؟

المحلول

يتم استخدام إعداد وضع التوافق للتحكم في بعض الجوانب الغامضة نسبيًا (IMHO) لسلوك محرك قاعدة البيانات. لا تمنع أو يمنع استخدام الامتدادات إلى لغة T-SQL من استخدام قواعد البيانات التي تم ترحيلها من الإصدارات السابقة-على سبيل المثال ، وستدعم قاعدة بيانات مدعومة من SQL 2000 واستعادة على SQL 2008 CTEs والمتعددات الجديدة المتعددة الجديدة- القيمة إدراج بيانات.

يتم دفن التفاصيل الفعلية لما يتم التحكم فيه بواسطة وضع توافق قاعدة البيانات في العديد من المقالات في الكتب عبر الإنترنت ؛ هذه هو مكان بداية جيد للبحث في هذا.

نصائح أخرى

لقد لاحظت هذا أيضًا ، ووجدت هذا البيان على MSDN:

يعين بعض سلوكيات قاعدة البيانات لتكون متوافقة مع الإصدار المحدد من SQL Server.

يؤثر وضع التوافق على السلوكيات "معينة" ، وليس جميع السلوكيات. انظر تغيير وثائق قاعدة البيانات للتفاصيل.

لا أرى كيف يمكن أن يعمل هذا في الوضع Compat 80. حاول إضافة هذا الخط قبل إنشاء الجدول الخاص بك:

sp_dbcmptlevel 'MDS'

هل يعود 80؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top