Sql-Server-2016
是否可以在 MSSQL 2016 上編輯分區函式?
我繼承了一個有數百萬行的分區數據庫,我注意到分區函式中有一個錯字:
CREATE PARTITION FUNCTION [Partition_by_customer](varchar(10)) AS RANGE RIGHT FOR VALUES (N'DMA', N'DMB', N'DMC', N'DMD', N'DME')
有沒有一種簡單的方法可以刪除那些 unicode 轉換器(因為它們會導致隱式轉換),一切都應該是 varchar(10)
謝謝羅傑
Unicode 文字到的隱式轉換是在
varchar
執行 DDL 時完成的一次性操作。“typo”(“N”國家字元前綴)不是分區函式定義的一部分,也不是 SQL Server 在創建後使用的。Unicode 文字由 SMO 在編寫函式定義腳本時生成。實際邊界值是一種
SQL_VARIANT
類型,並且與分區函式數據類型定義匹配,而與指定的文字無關。下面的目錄視圖查詢顯示了這一點:SELECT prv.value AS BoundaryValue , SQL_VARIANT_PROPERTY(value, 'BaseType') AS DataType , SQL_VARIANT_PROPERTY(value, 'MaxLength') AS Length FROM sys.partition_functions AS pf JOIN sys.partition_range_values AS prv ON prv.function_id = pf.function_id WHERE pf.name = N'Partition_by_customer';
結果:
+---------------+----------+--------+ | BoundaryValue | DataType | Length | +---------------+----------+--------+ | DMA | varchar | 10 | | DMB | varchar | 10 | | DMC | varchar | 10 | | DMD | varchar | 10 | | DME | varchar | 10 | +---------------+----------+--------+