データベースの照合順序がFrench_CI_AS
に設定され、FirstName
の列照合順序がdatabase_default
に設定されたEmployees
表があるとします。あなたはLatin1_General_CI_AI
に照合順序を変更するには、次のコードを実行した場合sys.columns
はまだあなたは数秒後に同じコードを実行した場合、sys.columns
は最終的に更新されますFrench_CI_AS
db照合変更後のSYS.columnsのリフレッシュ
ALTER DATABASE MyDB COLLATE Latin1_General_CI_AI;
SELECT DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS DatabaseCollation
--Return Latin1_General_CI_AI
SELECT collation_name AS FieldCollation
FROM sys.columns
WHERE OBJECT_ID IN(SELECT object_id FROM sys.objects WHERE type = 'U' AND NAME = 'Employees')
AND NAME = 'FirstName';
--return French_CI_AS
を返します。一方で、DATABASEPROPERTYEX
機能はLatin1_General_CI_AI
を返します。 。しかし、sys.columns
の更新を強制する方法はありますか?
EXEC sp_refreshsqlmodule N'dbo.Employees'
と
EXEC sp_refreshview N'dbo.Employees'
は、彼らの両方が(DBO saアカウントととせずに試してみました)エラーを発生させる:
は、私はすでにと
sp_refreshview
にStoredProcを試してみましたオブジェクト 'dbo.Employees'が見つかりませんでしたか、権限がありません。
はい、私は正しいデータベースにあります。これらのStoredProcのパラメータはNVARCHAR –
ですので、一重引用符が必要です@The_Black_Smurf列の照合順序が変更されていますか?私のテストでは、データベース照合を変更しても既存の列には影響しません。 – SQLChao