26
是否有可用於查找沒有排序規則的SQL目錄中的所有表中的所有列的腳本<database default>
?查找SQL Server中所有表的列的非默認排序規則
我已經接管了遺留系統,並且在一些表中有不同的排序規則,我希望能夠在一次搜索中找到所有實例,而不是手動執行。
但是我不想以編程方式更改排序規則,因爲我想逐一檢查每個表。
是否有可用於查找沒有排序規則的SQL目錄中的所有表中的所有列的腳本<database default>
?查找SQL Server中所有表的列的非默認排序規則
我已經接管了遺留系統,並且在一些表中有不同的排序規則,我希望能夠在一次搜索中找到所有實例,而不是手動執行。
但是我不想以編程方式更改排序規則,因爲我想逐一檢查每個表。
這裏試試這個腳本:
DECLARE @DatabaseCollation VARCHAR(100)
SELECT
@DatabaseCollation = collation_name
FROM
sys.databases
WHERE
database_id = DB_ID()
SELECT
@DatabaseCollation 'Default database collation'
SELECT
t.Name 'Table Name',
c.name 'Col Name',
ty.name 'Type Name',
c.max_length,
c.collation_name,
c.is_nullable
FROM
sys.columns c
INNER JOIN
sys.tables t ON c.object_id = t.object_id
INNER JOIN
sys.types ty ON c.system_type_id = ty.system_type_id
WHERE
t.is_ms_shipped = 0
AND
c.collation_name <> @DatabaseCollation
它檢查數據庫的默認排序規則,然後發現不符合任何列。
現貨,非常感謝。將盡快接受這個答案作爲「5分鐘」結束! – Rippo
謝謝,救了我很多時間:) – Pking
很好的答案,我認爲有一個小錯誤。如果數據庫具有自定義類型,則system_type_id上的聯接可以創建重複結果。我認爲連接實際上應該在user_type_id上。 – PeteT