重命名 sql server 安装服务器

来源:互联网 发布:酷士多网络云手机 编辑:程序博客网 时间:2024/05/01 21:48

在更改服务器名字的时候,sql server 的 replication 突然就失灵了,这里面有说法。sql server 的命名一般都是 serverName\instanceName。

那么怎样来修改服务器名字,对 sql server 的影响会更小呢?

1 查看冲突项
1.1 检查是否有 remote login 与 linked server. 如果有,当修改服务器名字的时候,会出现错误:Msg 15190.
1.1.1 概念: remote login.
1.1.2 列出 remote login:sys.remote_logins
1.1.3 移除 remote login: sp_dropremotelogin。 这里会有这个错误:

Msg 15185, Level 16, State 1, Procedure sp_dropremotelogin, Line 68 There is no remote user '(null)' mapped to local user '(null)' from the remote

怎么去解决,就是要移除相关 replication 的角色,下面在移除 replication 部分具体讲。
1.1.4 这里有牵扯到 sql server security 的概念:李笑来总结的很到位,问题都是由解决掉一个一个概念开始的。那么 sql server 的安全涉及到哪些概念呢?
我一看这个范畴,马上想到的是,角色驱动:一个角色赋予了各种权限,然后建立独立的账户,把账户归类到各种角色里面,那么某个特定的账户就有相应的权限了。每个账户可以有多个角色,每个角色也可以分配给不同账户。
数据库服务是集成在服务器上的,一个账户想要访问数据库,则必须有两种权限,一是服务器权限,可以访问服务器的某种资源的权限,比如要导出一定的数据到服务器本地磁盘上,这个时候可以将这个账户至少放入到服务器的两种角色中,一是访问服务器的角色,二是具有使用某种资源的角色;第二种权限是访问数据库的权限,仅仅访问数据库还不够,还需要有操作某个数据库的权限,所以数据库层面也应该有这类角色,db_owner, db_admin 之类的。
数据库仅有角色不完整,还必须有特定的人,也就是用户。这个用户就要新建了,并且赋予一定角色,然后还可以和 windows login 对应起来,就成了一个合法访问的账户了。这里如果不使用 windows 账户访问的话,就不必要对应,用这个新建的数据库层的用户也可以访问数据库,因为数据库角色本身就对应到了服务器的一类角色上面。
上面的角色架构纯属于猜想,还需要找到证据。两张表用来记录服务器角色与用户,两张表用来记录数据库层角色与用户,第五张表用来记录服务器角色与数据库角色的对应。第六张表应该还有服务器用户与数据库用户的对应。
安全范畴更专业的术语还有:authentication , authorization. 前者是访问权限,后者是使用权限。角色区分有 server role 和 database role. 用户级别有 windows credential, sql server login, sql server user(principal) 这里 principal 是负责人的意思。所以创建一个 sql server 级别的用户,应该先从 user 开始,再创建 login,再附角色。
这里写图片描述
这里写图片描述
1.2 检查是否服务器被用在 replication 中:
1.2.1 检查是不是用了 replication:
sys.database.is_publisher|is_distributor|is_subscribed
1.2.2 如何从 replication 中移出来:
这里涉及到的步骤要根据你当前的 sql server instance 是被用作什么角色来定。比如你是用做 distributor ,那么需要用 T-SQL 来手工移除这个角色也就是用 sp_dropdistributor;如果是用作 publisher, 那么就要用 sp_droppublisher。以此类推。
1.3 检查 reporting service 是不是在使用中:如果有用到 reporting service, 停用它。
1.4 检查是不是用了 database mirroring
1.4.1 使用了 database mirroring 的指标:sys.database_mirroring.mirroring_guid is not null
1.4.2 停用 database mirroring:
alter database set partner off

2、 修改服务器名字
2.1 检查当前服务器名字: @@servername
2.2 sp_dropserver
2.3 sp_addserver
2.4 重启 sql server service,让 @@servername 生效

3 修改后更新 metaData
重新添加第一步里面被删掉的 remote login, 重新建立 replication, 重启 database mirroring, 重启nreporting service.

参考: https://www.mssqltips.com/sqlservertip/2525/steps-to-change-the-server-name-for-a-sql-server-machine/

0 0
原创粉丝点击