计算机改名导致数据库链接的诡异问题
2013-07-08 20:47
225 查看
前几天给开发部门部署测试数据库时,遇到一个很诡异的问题:创建一个链接服务器GEK-MIS01时,报错如下:
消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行
仍有对服务器 'GEK-MIS01' 的远程登录或链接登录。
脚本如下(略去登录名等关键信息):
View Code
解决办法: 查看当前USER为guest, 执行下面赋权语句即可解决问题
SELECT CURRENT_USER;
GRANT EXECUTE ON SYS.XP_PROP_OLEDB_PROVIDER TO guest;
但是对于现象1,2,3则困扰了我好久,一直以为是权限问题,最后经过吐血的漫长排查,终于发现一个让人吐血的原因:这台测试数据库服务器原先的计算机名称为gek-mis01,后来不知道啥原因被系统管理员用作测试服务器(历史原因了我就不多说了),改名为GETTESTNT15,而一台新的服务器命名为gek-mis01,结果我今天新建链接服务器时,就踩到了这个地雷。
接下来解决起来就比较顺利了,首先删除该链接服务器,修复计算机改名问题,重新新建该链接数据库,OK,问题解决了!
Code Snippet
exec sp_droplinkedsrvlogin'GEK-MIS01' ,'xxxxx'
exec sp_dropserver'GEK-MIS01'
USE master;
GO
IF SERVERPROPERTY('servername') <> @@SERVERNAME
BEGIN
DECLARE @server sysname;
SET @server =@@SERVERNAME;
EXEC sp_dropserver@server= @server;
SET @server = CAST(SERVERPROPERTY('servername') AS sysname);
EXEC sp_addserver@server=@server, @local='LOCAL';
END
消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行
仍有对服务器 'GEK-MIS01' 的远程登录或链接登录。
脚本如下(略去登录名等关键信息):
标题: Microsoft SQL Server Management Studio ------------------------------ 无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc) 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476 ------------------------------ 其他信息: 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------ 拒绝了对对象 'xp_prop_oledb_provider' (数据库 'mssqlsystemresource',架构 'sys')的 EXECUTE 权限。 (Microsoft SQL Server,错误: 229) 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.4000&EvtSrc=MSSQLServer&EvtID=229&LinkId=20476 ------------------------------ 按钮: 确定 ------------------------------
View Code
解决办法: 查看当前USER为guest, 执行下面赋权语句即可解决问题
SELECT CURRENT_USER;
GRANT EXECUTE ON SYS.XP_PROP_OLEDB_PROVIDER TO guest;
但是对于现象1,2,3则困扰了我好久,一直以为是权限问题,最后经过吐血的漫长排查,终于发现一个让人吐血的原因:这台测试数据库服务器原先的计算机名称为gek-mis01,后来不知道啥原因被系统管理员用作测试服务器(历史原因了我就不多说了),改名为GETTESTNT15,而一台新的服务器命名为gek-mis01,结果我今天新建链接服务器时,就踩到了这个地雷。
接下来解决起来就比较顺利了,首先删除该链接服务器,修复计算机改名问题,重新新建该链接数据库,OK,问题解决了!
Code Snippet
exec sp_droplinkedsrvlogin'GEK-MIS01' ,'xxxxx'
exec sp_dropserver'GEK-MIS01'
USE master;
GO
IF SERVERPROPERTY('servername') <> @@SERVERNAME
BEGIN
DECLARE @server sysname;
SET @server =@@SERVERNAME;
EXEC sp_dropserver@server= @server;
SET @server = CAST(SERVERPROPERTY('servername') AS sysname);
EXEC sp_addserver@server=@server, @local='LOCAL';
END
相关文章推荐
- 域问题导致配置用户不能链接数据库
- 域问题导致配置用户不能链接数据库
- mysql数据库由于启用dns逆向解析导致数据库链接查询过慢的问题
- ThinkPHP学习笔记(五)数据库的链接设置以及主从数据库配置需要注意的问题
- 解决计算机改名无法连接TFS的问题
- 解决MyBatis进行数据库操作时因参数过长导致打印日志过长的问题
- 记一次因磁盘块默认保留策略导致的数据库导入失败问题
- 解决因数据库一次查询数据量过大导致的内存溢出问题
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- asp.net2.0+sql2005的数据库链接问题
- python+uwsgi导致redis无法长链接引起性能下降问题记录
- SQL Server2008新实例远程数据库链接问题(sp_addlinkedserver)
- SQL Server问题之计算机名称更改后无法登陆本地数据库
- FluentNHibernate当数据库设置默认值时,使用插入操作,导致默认值没有写入问题
- 数据库备份导致的zabbix_server大量告警的问题排查
- 数据库故障诊断(Troubleshooting)之性能问题导致的数据库严重故障案例之一
- 通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题
- 当spfile文件中的参数修改错误,导致数据库无法启动问题
- jsp与数据库的链接编码问题