Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改SQL Server数据库排序_Sql_Sql Server_Sql Server 2008_Collation - Fatal编程技术网

更改SQL Server数据库排序

更改SQL Server数据库排序,sql,sql-server,sql-server-2008,collation,Sql,Sql Server,Sql Server 2008,Collation,我请求更改SQL Server数据库的排序规则: ALTER数据库solarwind95 将SQL\u拉丁语1\u常规\u CP1\u CI\u整理为 但我有一个奇怪的错误: Meldung 5075,Ebene 16,状态1, 第1号文件为“Spalte”-对象 “CustomPollerAsignment.PollerID”列表 “Datenbanksortierung”abhängig。 我不知道该怎么办 格安德特·沃登,温恩·艾因 国际卫生条例草案 阿布哈尼格主义者。你死了吗 安杰基滕德

我请求更改SQL Server数据库的排序规则:

ALTER数据库solarwind95 将SQL\u拉丁语1\u常规\u CP1\u CI\u整理为

但我有一个奇怪的错误:

Meldung 5075,Ebene 16,状态1, 第1号文件为“Spalte”-对象 “CustomPollerAsignment.PollerID”列表 “Datenbanksortierung”abhängig。 我不知道该怎么办 格安德特·沃登,温恩·艾因 国际卫生条例草案 阿布哈尼格主义者。你死了吗 安杰基滕德酒店 Datenbanksortierung和wiederholen 我是沃冈先生

对不起,德国的错误信息。我不知道如何将语言转换为英语,但这里有一个翻译:

翻译:信息5075,第16层, 状态1,第1行“列”对象 'CustomPollerAsignment.PollerID' 取决于“数据库排序”。这个 如果发生以下情况,则无法更改数据库排序: 模式绑定对象依赖于它。 删除数据库的依赖项 sortieren并重试


我还有很多这样的错误。

这些将是作为聚集索引的主键。使用聚集索引时,记录按列的升序存储,如果更改数据库的排序规则,则所有表都需要重新排序

这些将是作为聚集索引的主键。使用聚集索引时,记录按列的升序存储,如果更改数据库的排序规则,则所有表都需要重新排序

您需要从视图和表值函数中删除带有SCHEMABINDING的
。要识别它们,您可以查询
信息\u架构
视图:

SELECT TABLE_SCHEMA, TABLE_NAME AS VIEW_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_DEFINITION LIKE '%SCHEMABINDING%'

SELECT ROUTINE_SCHEMA, ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%SCHEMABINDING%'
  • 首先备份数据库
  • 生成所有模式绑定视图和函数的
    ALTER
    脚本
  • 从脚本中删除单词“
    与SCHEMABINDING
  • 运行脚本几次,直到解决所有引用错误
  • 更改数据库的排序规则
  • 编写脚本并删除所有约束(关键帧、检查和默认值)
  • 使用下面的脚本更改每列的排序规则
  • 重新创建约束
  • 最后,运行原始脚本几次以启用模式绑定
  • 您可以使用此脚本更改所有列的排序规则:

    DECLARE @collation nvarchar(128)
    DECLARE @commands table ([SQL] nvarchar(max))
    DECLARE @cursor cursor
    DECLARE @sql nvarchar(max)
    
    SET @collation = 'SQL_Latin1_General_CP1_CI_AS'
    
    INSERT @commands ([SQL])
    SELECT 'ALTER TABLE ' + QUOTENAME(c.TABLE_SCHEMA) +'.'+ QUOTENAME(c.TABLE_NAME)
        + ' ALTER COLUMN ' + QUOTENAME(c.COLUMN_NAME)
        + ' ' + c.DATA_TYPE
        + ISNULL('(' + LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH)) + ')', '')
        + ISNULL(' COLLATE ' + @collation, '')
        + ' ' + CASE c.IS_NULLABLE WHEN 'NO' THEN 'NOT ' ELSE '' END + 'NULL'
    FROM INFORMATION_SCHEMA.COLUMNS c
    INNER JOIN INFORMATION_SCHEMA.TABLES t
    ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME
    WHERE t.TABLE_TYPE = 'BASE TABLE'
    AND c.COLLATION_NAME <> @collation
    
    SET @cursor = CURSOR FOR SELECT [SQL] FROM @commands
    OPEN @cursor
    FETCH NEXT FROM @cursor INTO @sql
    
    WHILE @@FETCH_STATUS = 0
    BEGIN 
        PRINT @sql
        EXEC (@sql)
    
        FETCH NEXT FROM @cursor INTO @sql
    END
    
    DECLARE@collation-nvarchar(128)
    声明@commands表([SQL]nvarchar(max))
    声明@cursor游标
    声明@sql nvarchar(最大值)
    设置@collation='SQL\u Latin1\u General\u CP1\u CI\u AS'
    插入@commands([SQL])
    选择“ALTER TABLE”+QUOTENAME(c.TABLE“U模式)+.+QUOTENAME(c.TABLE”U名称)
    +“ALTER COLUMN”+QUOTENAME(c.COLUMN_NAME)
    +''+c.数据类型
    +ISNULL(“(“+LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH))+”),“”)
    +ISNULL('COLLATE'+@collation',)
    +''+案例c.在'NO'然后'NOT'ELSE'结束时可为NULL'
    从信息_SCHEMA.c列
    内部联接信息\u SCHEMA.t表
    在t.TABLE_SCHEMA=c.TABLE_SCHEMA和t.TABLE_NAME=c.TABLE_NAME上
    其中t.TABLE_TYPE='BASE TABLE'
    和c.COLLATION_NAME@COLLATION
    为从@commands中选择[SQL]设置@cursor=cursor
    打开@cursor
    从@cursor获取下一个到@sql
    而@@FETCH\u STATUS=0
    开始
    打印@sql
    EXEC(@sql)
    从@cursor获取下一个到@sql
    结束
    
    您需要从视图和表值函数中删除带有SCHEMABINDING的
    。要识别它们,您可以查询
    信息\u架构
    视图:

    SELECT TABLE_SCHEMA, TABLE_NAME AS VIEW_NAME
    FROM INFORMATION_SCHEMA.VIEWS
    WHERE VIEW_DEFINITION LIKE '%SCHEMABINDING%'
    
    SELECT ROUTINE_SCHEMA, ROUTINE_NAME
    FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_DEFINITION LIKE '%SCHEMABINDING%'
    
  • 首先备份数据库
  • 生成所有模式绑定视图和函数的
    ALTER
    脚本
  • 从脚本中删除单词“
    与SCHEMABINDING
  • 运行脚本几次,直到解决所有引用错误
  • 更改数据库的排序规则
  • 编写脚本并删除所有约束(关键帧、检查和默认值)
  • 使用下面的脚本更改每列的排序规则
  • 重新创建约束
  • 最后,运行原始脚本几次以启用模式绑定
  • 您可以使用此脚本更改所有列的排序规则:

    DECLARE @collation nvarchar(128)
    DECLARE @commands table ([SQL] nvarchar(max))
    DECLARE @cursor cursor
    DECLARE @sql nvarchar(max)
    
    SET @collation = 'SQL_Latin1_General_CP1_CI_AS'
    
    INSERT @commands ([SQL])
    SELECT 'ALTER TABLE ' + QUOTENAME(c.TABLE_SCHEMA) +'.'+ QUOTENAME(c.TABLE_NAME)
        + ' ALTER COLUMN ' + QUOTENAME(c.COLUMN_NAME)
        + ' ' + c.DATA_TYPE
        + ISNULL('(' + LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH)) + ')', '')
        + ISNULL(' COLLATE ' + @collation, '')
        + ' ' + CASE c.IS_NULLABLE WHEN 'NO' THEN 'NOT ' ELSE '' END + 'NULL'
    FROM INFORMATION_SCHEMA.COLUMNS c
    INNER JOIN INFORMATION_SCHEMA.TABLES t
    ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME
    WHERE t.TABLE_TYPE = 'BASE TABLE'
    AND c.COLLATION_NAME <> @collation
    
    SET @cursor = CURSOR FOR SELECT [SQL] FROM @commands
    OPEN @cursor
    FETCH NEXT FROM @cursor INTO @sql
    
    WHILE @@FETCH_STATUS = 0
    BEGIN 
        PRINT @sql
        EXEC (@sql)
    
        FETCH NEXT FROM @cursor INTO @sql
    END
    
    DECLARE@collation-nvarchar(128)
    声明@commands表([SQL]nvarchar(max))
    声明@cursor游标
    声明@sql nvarchar(最大值)
    设置@collation='SQL\u Latin1\u General\u CP1\u CI\u AS'
    插入@commands([SQL])
    选择“ALTER TABLE”+QUOTENAME(c.TABLE“U模式)+.+QUOTENAME(c.TABLE”U名称)
    +“ALTER COLUMN”+QUOTENAME(c.COLUMN_NAME)
    +''+c.数据类型
    +ISNULL(“(“+LTRIM(STR(c.CHARACTER_MAXIMUM_LENGTH))+”),“”)
    +ISNULL('COLLATE'+@collation',)
    +''+案例c.在'NO'然后'NOT'ELSE'结束时可为NULL'
    从信息_SCHEMA.c列
    内部联接信息\u SCHEMA.t表
    在t.TABLE_SCHEMA=c.TABLE_SCHEMA和t.TABLE_NAME=c.TABLE_NAME上
    其中t.TABLE_TYPE='BASE TABLE'
    和c.COLLATION_NAME@COLLATION
    为从@commands中选择[SQL]设置@cursor=cursor
    打开@cursor
    从@cursor获取下一个到@sql
    而@@FETCH\u STATUS=0
    开始
    打印@sql
    EXEC(@sql)
    从@cursor获取下一个到@sql
    结束
    
    在这种情况下,即使删除schemabinding也帮不了你

    更改排序规则需要中描述的步骤

    它主要适用于SQL Server 2000,但同样的原则也适用

    • 为空表编写脚本
    • 脚本约束、触发器、键等+所有代码、视图等,供以后使用
    • 在新数据库中创建裸表
    • DTS或SSIS裸数据
    • 应用脚本创建约束、触发器、键、代码、视图等

    在这种情况下,即使删除schemabinding也帮不了你

    更改排序规则需要中描述的步骤

    它主要适用于SQL Server 2000,但同样的原则也适用

    • 为空表编写脚本
    • 脚本约束、触发器、键等+所有代码、视图等,供以后使用
    • 在新数据库中创建裸表
    • DTS或SSIS裸数据
    • 应用脚本创建co