对象 'fn_item2row' 依赖于 数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改数据库排序规则。请删除数据库排序规则的依赖项,然后

hy0505 2018-09-26 01:42:59
消息 5075,级别 16,状态 1,第 1 行
对象 'fn_item2row' 依赖于 数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改数据库排序规则。请删除数据库排序规则的依赖项,然后重试操作。
消息 5072,级别 16,状态 1,第 1 行
ALTER DATABASE 失败。无法将数据库 'CHARACTER_01_DBF' 的默认排序规则设置为 Chinese_PRC_CI_AS。





其他都可以正常更改试过很多网上的教程 基本都没有改掉 应该是我的技术不到位 请求帮主 数据库是用的国外的数据备份 中文名称不显示 提示是问号
...全文
1218 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-09-27
  • 打赏
  • 举报
回复
引用 6 楼 hy0505 的回复:
[quote=引用 2 楼 sinat_28984567 的回复:]
其他的改过来的,数据有问题吗,有乱码的没有?
可以试试新建一个指定规则的新库,然后把数据导入进去,然后修改库名。


我的就是创建中文名称的时候显示问号 我才在哪里更换规则[/quote]
还是新建库,导数据吧,新建立的库得按照想要的规则设置
hy0505 2018-09-27
  • 打赏
  • 举报
回复
引用 12 楼 yenange 的回复:
[quote=引用 10 楼 hy0505 的回复:]
我这个单独在数据量修改成nvarchar 直接先用英文 然后 在使用数据库更改中文 可以正常显示 但是 除了在数据库 直接修改以外 在外部添加或者注册的中文 都在数据库中保存这只显示 问号 英文的可以正常显示


如果用应用程序添加数据, 可能传过来就是乱码——在到达 sql server 之间就是乱码了。
这可能是因为网页的编码设置等造成。
你可以用 sqlprofiler 跟踪执行的 真实sql , 如果执行的 sql , 传入的本身就是乱码, 就不能算 sqlserver 的问题。
只在传入的是正常中文, 但最终得不到中文, 才算是 sqlserver 的问题。
你先用 sqlprofiler 跟踪再说吧。[/quote]

https://pan.baidu.com/s/1gnAgECmC3brA-arA4imE9Q
你能可以帮我看一下吗 我弄了实在弄不起来 我弄了很多次 都是不行 都搞定这个
hy0505 2018-09-27
  • 打赏
  • 举报
回复
引用 14 楼 sinat_28984567 的回复:
[quote=引用 6 楼 hy0505 的回复:]
[quote=引用 2 楼 sinat_28984567 的回复:]
其他的改过来的,数据有问题吗,有乱码的没有?
可以试试新建一个指定规则的新库,然后把数据导入进去,然后修改库名。


我的就是创建中文名称的时候显示问号 我才在哪里更换规则[/quote]
还是新建库,导数据吧,新建立的库得按照想要的规则设置[/quote]
https://pan.baidu.com/s/1gnAgECmC3brA-arA4imE9Q
你能帮我看一下吗 我弄了实在弄不起来
hy0505 2018-09-26
  • 打赏
  • 举报
回复
引用 12 楼 yenange 的回复:
[quote=引用 10 楼 hy0505 的回复:]
我这个单独在数据量修改成nvarchar 直接先用英文 然后 在使用数据库更改中文 可以正常显示 但是 除了在数据库 直接修改以外 在外部添加或者注册的中文 都在数据库中保存这只显示 问号 英文的可以正常显示


如果用应用程序添加数据, 可能传过来就是乱码——在到达 sql server 之间就是乱码了。
这可能是因为网页的编码设置等造成。
你可以用 sqlprofiler 跟踪执行的 真实sql , 如果执行的 sql , 传入的本身就是乱码, 就不能算 sqlserver 的问题。
只在传入的是正常中文, 但最终得不到中文, 才算是 sqlserver 的问题。
你先用 sqlprofiler 跟踪再说吧。[/quote]
好的 我试试看
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
引用 10 楼 hy0505 的回复:
我这个单独在数据量修改成nvarchar 直接先用英文 然后 在使用数据库更改中文 可以正常显示 但是 除了在数据库 直接修改以外 在外部添加或者注册的中文 都在数据库中保存这只显示 问号 英文的可以正常显示


如果用应用程序添加数据, 可能传过来就是乱码——在到达 sql server 之间就是乱码了。
这可能是因为网页的编码设置等造成。
你可以用 sqlprofiler 跟踪执行的 真实sql , 如果执行的 sql , 传入的本身就是乱码, 就不能算 sqlserver 的问题。
只在传入的是正常中文, 但最终得不到中文, 才算是 sqlserver 的问题。
你先用 sqlprofiler 跟踪再说吧。
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
引用 10 楼 hy0505 的回复:
我这个单独在数据量修改成nvarchar 直接先用英文 然后 在使用数据库更改中文 可以正常显示 但是 除了在数据库 直接修改以外 在外部添加或者注册的中文 都在数据库中保存这只显示 问号 英文的可以正常显示


一开始我就跟你说了, 不要再在那个旧库上折腾了。
改成 nvarchar , 还得改字段的排序规则。



这样搞得累不累?

你直接在默认为中文排序规则的SQL Server实例上创建新库, 才是正道。
那个旧库上弄, 折腾死了都不一定能排除全部的bug。
hy0505 2018-09-26
  • 打赏
  • 举报
回复
引用 8 楼 hy0505 的回复:
[quote=引用 7 楼 yenange 的回复:]
创建新库指定排序规则:
CREATE DATABASE [newDB]
ON PRIMARY
( NAME = N'newDB', FILENAME = N'E:\Database\newDB.mdf' , SIZE = 5120KB , FILEGROWTH = 8192KB )
LOG ON
( NAME = N'newDB_log', FILENAME = N'E:\Database\newDB_log.ldf' , SIZE = 2048KB , FILEGROWTH = 8192KB )
COLLATE Chinese_PRC_CI_AS
GO




或者图形界面指定也可以:


当然, 光这样还不够, 所以需要填写中文字符串的字段, 都应该改为 nvarchar , 这样才能做到最大的兼容----即使库拿到其它语言的操作系统也不会再出问题。
如果你怕麻烦, 所有的 varchar 都改 nvarchar 也行( text => nvarchar(max), char => nchar )。


我尝试了 也修改了全部nvarchar 但是就无法运作了[/quote]

引用 9 楼 yenange 的回复:
[quote=引用 8 楼 hy0505 的回复:]
[quote=引用 7 楼 yenange 的回复:]
创建新库指定排序规则:
CREATE DATABASE [newDB]
ON PRIMARY
( NAME = N'newDB', FILENAME = N'E:\Database\newDB.mdf' , SIZE = 5120KB , FILEGROWTH = 8192KB )
LOG ON
( NAME = N'newDB_log', FILENAME = N'E:\Database\newDB_log.ldf' , SIZE = 2048KB , FILEGROWTH = 8192KB )
COLLATE Chinese_PRC_CI_AS
GO


或者图形界面指定也可以:


当然, 光这样还不够, 所以需要填写中文字符串的字段, 都应该改为 nvarchar , 这样才能做到最大的兼容----即使库拿到其它语言的操作系统也不会再出问题。
如果你怕麻烦, 所有的 varchar 都改 nvarchar 也行( text => nvarchar(max), char => nchar )。


我尝试了 也修改了全部nvarchar 但是就无法运作了[/quote]


只是创建新库要这么做。
原来旧库已有的数据, 乱码的就没救了。

如果在应用程序界面不是乱码的话, 可以用应用程序读取所有数据, 再插入到新表( 新表必须用 nvarchar 类型 )。
以前我有个库就是这么处理的, 挽救了大概95%的数据, 其它少量几十条, 人工采访相关人员补上了。

当然, 应用程序也是乱码就难说了。



[/quote]
我这个单独在数据量修改成nvarchar 直接先用英文 然后 在使用数据库更改中文 可以正常显示 但是 除了在数据库 直接修改以外 在外部添加或者注册的中文 都在数据库中保存这只显示 问号 英文的可以正常显示
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
引用 8 楼 hy0505 的回复:
[quote=引用 7 楼 yenange 的回复:]
创建新库指定排序规则:
CREATE DATABASE [newDB]
ON PRIMARY
( NAME = N'newDB', FILENAME = N'E:\Database\newDB.mdf' , SIZE = 5120KB , FILEGROWTH = 8192KB )
LOG ON
( NAME = N'newDB_log', FILENAME = N'E:\Database\newDB_log.ldf' , SIZE = 2048KB , FILEGROWTH = 8192KB )
COLLATE Chinese_PRC_CI_AS
GO


或者图形界面指定也可以:


当然, 光这样还不够, 所以需要填写中文字符串的字段, 都应该改为 nvarchar , 这样才能做到最大的兼容----即使库拿到其它语言的操作系统也不会再出问题。
如果你怕麻烦, 所有的 varchar 都改 nvarchar 也行( text => nvarchar(max), char => nchar )。


我尝试了 也修改了全部nvarchar 但是就无法运作了[/quote]


只是创建新库要这么做。
原来旧库已有的数据, 乱码的就没救了。

如果在应用程序界面不是乱码的话, 可以用应用程序读取所有数据, 再插入到新表( 新表必须用 nvarchar 类型 )。
以前我有个库就是这么处理的, 挽救了大概95%的数据, 其它少量几十条, 人工采访相关人员补上了。

当然, 应用程序也是乱码就难说了。



hy0505 2018-09-26
  • 打赏
  • 举报
回复
引用 7 楼 yenange 的回复:
创建新库指定排序规则:
CREATE DATABASE [newDB]
ON PRIMARY
( NAME = N'newDB', FILENAME = N'E:\Database\newDB.mdf' , SIZE = 5120KB , FILEGROWTH = 8192KB )
LOG ON
( NAME = N'newDB_log', FILENAME = N'E:\Database\newDB_log.ldf' , SIZE = 2048KB , FILEGROWTH = 8192KB )
COLLATE Chinese_PRC_CI_AS
GO


或者图形界面指定也可以:


当然, 光这样还不够, 所以需要填写中文字符串的字段, 都应该改为 nvarchar , 这样才能做到最大的兼容----即使库拿到其它语言的操作系统也不会再出问题。
如果你怕麻烦, 所有的 varchar 都改 nvarchar 也行( text => nvarchar(max), char => nchar )。


我尝试了 也修改了全部nvarchar 但是就无法运作了
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
创建新库指定排序规则:
CREATE DATABASE [newDB]
ON PRIMARY
( NAME = N'newDB', FILENAME = N'E:\Database\newDB.mdf' , SIZE = 5120KB , FILEGROWTH = 8192KB )
LOG ON
( NAME = N'newDB_log', FILENAME = N'E:\Database\newDB_log.ldf' , SIZE = 2048KB , FILEGROWTH = 8192KB )
COLLATE Chinese_PRC_CI_AS
GO


或者图形界面指定也可以:


当然, 光这样还不够, 所以需要填写中文字符串的字段, 都应该改为 nvarchar , 这样才能做到最大的兼容----即使库拿到其它语言的操作系统也不会再出问题。
如果你怕麻烦, 所有的 varchar 都改 nvarchar 也行( text => nvarchar(max), char => nchar )。
二月十六 2018-09-26
  • 打赏
  • 举报
回复
其他的改过来的,数据有问题吗,有乱码的没有?
可以试试新建一个指定规则的新库,然后把数据导入进去,然后修改库名。
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
原本就不是中文排序规则的库, 里面还存了很多现有的数据, 就不要指望简单两下能改好了。依赖太多,可能每个表的列都要改。 你本机这边默认是中文排序规则的对不对? 看你的库, 表也不算多。先创建一个新库, 将原库中的数据导入过来就好了, 这样就不需要纠结了。
hy0505 2018-09-26
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
其他的改过来的,数据有问题吗,有乱码的没有?
可以试试新建一个指定规则的新库,然后把数据导入进去,然后修改库名。


我的就是创建中文名称的时候显示问号 我才在哪里更换规则
吉普赛的歌 2018-09-26
  • 打赏
  • 举报
回复
引用 3 楼 hy0505 的回复:
那我就是重新建立一个 库 然后 把里面的数据表 都倒出来 在倒入新建立的库吗
hy0505 2018-09-26
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
其他的改过来的,数据有问题吗,有乱码的没有?
可以试试新建一个指定规则的新库,然后把数据导入进去,然后修改库名。


那我就是重新建立一个 库 然后 把里面的数据表 都倒出来 在倒入新建立的库吗
hy0505 2018-09-26
  • 打赏
  • 举报
回复
那我就是重新建立一个 库 然后 把里面的数据表 都倒出来 在倒入新建立的库吗

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧