Chúng tôi đang trong quá trình thay thế Máy chủ SQL của mình và đã quyết định rằng việc đổi tên máy chủ sẽ dễ dàng hơn nhiều so với việc thay đổi mọi thứ khác để trỏ đến một tên mới. Chúng tôi đã tìm thấy hướng dẫn về việc thay đổi tên đối tượng SQL Server để khớp với tên máy tính giống như sau:
sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local
Mặc dù SQL Enterprise Manager dường như không thích những thứ đó cùng nhau. Tôi đã phải thay đổi nó thành như sau để làm cho nó hoạt động cùng nhau:
sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO
Điều này không tệ, nhưng tôi thích mọi thứ tự động hơn. Vì @@ ServerName trả về tên của thể hiện, tôi đã tìm ra cách tự động hóa dòng đầu tiên:
sp_dropserver @@ServerName; GO
Tôi cũng đã học được rằng SERVERPROPERTY ('ServerName') có nghĩa vụ phải trả lại tên máy tính, vì vậy tôi nghĩ rằng tôi có thể sử dụng nó để tự động hóa phần thứ hai, nhưng điều này không hoạt động:
sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO
Tôi đã thử thiết lập một biến, dù sao tôi cũng cần phải cập nhật các công việc của Tác nhân SQL, nhưng nó cũng không hoạt động:
DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO
Cú pháp không chính xác gần 'sp_addserver'.
Tôi rất muốn không phải mã hóa tên máy chủ mới vào tập lệnh, để làm cho điều này dễ dàng sử dụng lại hơn. Bất cứ ai có ý tưởng?