SQL Server伺服器名稱與預設執行個體名不一致的修複方法

來源:互聯網
上載者:User

標籤:style   blog   http   io   os   使用   ar   strong   資料   

 SQL Server伺服器名稱與預設執行個體名不一致的修複方法分類: 個人累積 SQl SERVER 資料庫複寫2011-08-10 09:49 10157人閱讀 評論(0) 收藏 舉報sql server伺服器sqlservermicrosoftserver遠端連線 [sql] view plaincopy 
  1. --原因分析:  
  2. --SERVERPROPERTY 函數的 ServerName 屬性與@@SERVERNAME 返回相似的資訊。  
  3. --ServerName 屬性提供Windows 伺服器和執行個體名稱,兩者共同構成唯一的伺服器執行個體;  
  4. [email protected]@SERVERNAME 提供當前配置的本機伺服器名稱。  
  5.   
  6. --如果安裝時未更改預設伺服器名稱,則 ServerName 屬性和 @@SERVERNAME 返回相同的資訊。如果在安裝時已將本機伺服器名稱從預設伺服器名稱更改為其他名稱,則 @@SERVERNAME 返回更改後的新名稱。  
  7.   
  8. --如果安裝時未更改預設伺服器名稱,但是安裝完成後更改過Windows 伺服器名稱,則@@SERVERNAME仍然返回安裝時的伺服器名稱,ServerName 屬性返回更改過後的Windows 伺服器名稱。也就是說,@@SERVERNAME不會報告Windows 伺服器名稱的更改,ServerName 屬性會報告Windows 伺服器名稱的更改。這就會造成SQL Server預設執行個體的@@SERVERNAME和ServerName 屬性不一致。這種情況在一些應用中常常會出現無法串連的問題,有時我們需要修複這種情況。  
  9.   
  10. --修複方法:(修複方法很簡單,直接執行以下語句即可)  
  11. use master    
  12.        go    
  13.        select @@servername  
  14.        select serverproperty(‘servername‘)  
  15. ------  
  16.   IF serverproperty(‘servername‘)<>@@servername    
  17.   BEGIN  
  18.   DECLARE  @server SYSNAME  
  19.   SET   @[email protected]@servername      
  20.   EXEC  sp_dropserver @[email protected]    
  21.   SET   @server=cast(serverproperty(‘servername‘) AS SYSNAME)   
  22.   EXEC  sp_addserver @[email protected],@local=‘LOCAL‘     
  23.   END  
  24.   ELSE  
  25.     PRINT ‘執行個體名與主機名稱一致,無需修改!‘  
  26.    

若,安裝SQL之後 伺服器修改主機名稱,造成不一致,且之前有存在複製發布:

 

 機器名與執行個體名不同,解決辦法

在執行 exec sp_addlinkedserver ‘DMGZSRV10‘ 的時候一直提示

訊息 15190,層級 16,狀態 1,過程 sp_dropserver,第 56 行
仍有對伺服器 ‘DMGZSRV10‘ 的遠程登入或連結登入。

又執行

exec sp_dropserver ‘DMGZSRV10‘, ‘droplogins‘ 

這時提示

無法刪除伺服器 ‘LC04‘,因為該伺服器用作複製過程中的發行伺服器。 (Microsoft SQL Server,錯誤: 20582)



下面是解決的方案

原始狀態
1、伺服器名LC04 MSSQL執行個體名MSSQLSERVER
2、在LC04上建立了發布,在另一台伺服器上訂閱或者用SQLServer管理器遠端存取LC04上的SQLServer,出現錯誤:
無法串連到 LC04。
-----------------------------
其他資訊:

在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連) (Microsoft SQL Server,錯誤: 53)


解決處理

將LC04的電腦名稱改為MSSQLSERVER與MSSQL執行個體名相同
此時狀態
SQLServer管理器遠程可以訪問LC04的資料庫,但不能訂閱,出現錯誤:
SQL Server 複製需要有實際的伺服器名稱才能串連到伺服器。不支援通過伺服器別名、IP 位址或任何其他備用名稱進行串連。請指定實際的伺服器名稱“LC04”。 (Replication.Utilities)


解決處理

在LC04(現在應當名為MSSQLSERVER)的伺服器上,執行如下代碼
SELECT @@SERVERNAME ,serverproperty(‘servername‘)
發現兩個不同,分別為LC04和MSSQLSERVER


執行如下代碼

exec sp_droplinkedsrvlogin ‘LC04‘,null
exec sp_dropserver ‘LC04‘,‘droplogins‘
exec sp_addserver ‘MSSQLSERVER‘ , ‘LOCAL‘ 

出現錯誤
無法刪除伺服器 ‘LC04‘,因為該伺服器用作複製過程中的發行伺服器。 (Microsoft SQL Server,錯誤: 20582)


解決處理

select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin ‘LC04‘,null
exec sp_dropserver ‘LC04‘,‘droplogins‘
exec sp_addserver ‘MSSQLSERVER‘ , ‘LOCAL‘ 
重啟SQLServer服務


設定發行伺服器屬性,發現發行伺服器的伺服器名還是為LC04,造成發布執行錯誤:
在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連) (Microsoft SQL Server,錯誤: 53)


使用 exec sp_helpserver
發現name為repl_distributor的伺服器的network_name還是LC04


解決處理


執行exec sp_setnetname ‘repl_distributor‘,‘MSSQLSERVER‘


再次設定發行伺服器,並發布,完成


實際上在SQLServer和其他應用中還有可能用到原有的資料庫名LC04
可以建立SQLServer的新別名為LC04,這樣基本上都可以解決了

 

 
  • 上一篇如何刪除發行伺服器distribution
  • 下一篇timestamp應用(解決並發問題)——樂觀鎖和悲觀鎖【轉】

SQL Server伺服器名稱與預設執行個體名不一致的修複方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.