首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >server 2016只更改服务器而不更改所有数据库。

server 2016只更改服务器而不更改所有数据库。
EN

Database Administration用户
提问于 2019-04-30 08:53:49
回答 3查看 430关注 0票数 4

如何在不改变整个数据库的情况下更改服务器排序规则,因为我有许多不属于我的数据库,所以我只想更改服务器排序规则和我的数据库。

Server版本: 2016 Server排序规则: Arabic_CI_AI

在服务器中,我有许多数据库,其中一些数据库是我工作的,而另一些数据库不属于我,不应该被触摸。我想更改排序规则: Arabic_100_CI_AI

当我使用这个脚本时:

代码语言:javascript
复制
sqlservr -m -T4022 -T3659 -s"MSSQLSERVER" -q"Arabic_CI_AI"

它与服务器中的所有数据库一起更改服务器排序规则,但我不想这样做--我只需要更改服务器的排序规则。

这有可能吗?

EN

回答 3

Database Administration用户

发布于 2019-04-30 10:13:52

您需要使用使用REBUILDDATABASE运行安装程序选项来更改服务器排序规则,而无需更改现有用户数据库的排序规则。这将创建新的系统数据库,因此您需要重新创建服务器级的对象,重新附加用户数据库,然后重新映射登录。

注意,tempdb排序规则也将被更改,并且根据现有的用户数据库排序规则以及查询的编码方式,在操作之后可能导致排序冲突错误(例如,创建临时表而不指定明确的DATABASE_DEFAULT列校对 )。

系统排序更改不是一件小事,需要进行彻底的测试。

票数 4
EN

Database Administration用户

发布于 2019-04-30 10:55:11

如果您需要在不影响其他数据库的情况下更改服务器级别的设置,我建议您在同一服务器上创建一个新实例。如果在默认实例上运行,则创建一个命名实例并将数据库传输到此实例。这样,您可以根据自己的意愿进行更改,而不会影响其他数据库。

如果上面不可能,那么,它真的很难,并有可能影响所有的数据库正如丹·古兹曼已经提到的

我希望上面能帮上忙。

票数 3
EN

Database Administration用户

发布于 2019-04-30 13:31:19

若要更改实例和0或多个用户数据库的排序规则,可以使用已在执行的无文档-q方法,只需分离一个或多个要从排序规则更新中排除的数据库。然后,在排序规则更新之后,重新附加您分离的所有数据库。

与运行SETUP.EXE /ACTION=REBUILDDATABASE的文档化方法相比,这种方法不需要重新构建SQL作业、登录等等,但缺点是它没有文档/不受支持。这并不是说任何事情都会出错,只是说如果有什么事情发生了,微软就帮不上忙。

有关sqlservr.exe -q方法的详细描述(以及关于不同级别的排序规则如何工作以及需要注意的潜在问题的大量详细信息),请参见我的文章:

更改所有用户数据库中实例、数据库和所有列的排序规则:什么可能出错?

我甚至提到了这样一个场景,即在该帖子中只使用detach / attach更新数据库的一个子集。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/237008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档