SQL Server 2008 R2: Sự cố sau khi thay đổi tên máy tính


10

Tôi đang gặp vấn đề khó hiểu sau khi thay đổi tên máy tính của máy chủ từ xa lưu trữ phiên bản SQL Server cục bộ.

Về cơ bản, một máy chủ từ xa đã được chuyển từ trang này sang trang khác. Để tạo điều kiện thuận lợi cho điều này, tôi đã sao lưu và khôi phục cơ sở dữ liệu cũ thành tên cơ sở dữ liệu mới, xóa dữ liệu để có thể sử dụng làm cơ sở dữ liệu mới cho phần mềm máy khách. Tôi cũng đã thay đổi tên máy tính, vì chúng tôi luôn làm như vậy để xác định mỗi máy chủ theo số trang web của nó.

Cơ sở dữ liệu có thể được kết nối với phần mềm máy khách tốt và tôi có thể đăng nhập trực tiếp vào SQL Server. Tuy nhiên, một trong những công việc Đại lý máy chủ SQL của tôi không thành công, có lỗi trong nhật ký sự kiện:

SQL Server được lên lịch công việc 'Thiết lập lại hàng đêm' (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - Trạng thái: Không thành công - Được gọi vào: 2012/02/07 08:10:05 - Thông báo: Công việc không thành công. Không thể xác định liệu chủ sở hữu (Site-19 \ Admin) của công việc Nightly Reset có quyền truy cập máy chủ hay không (lý do: Không thể lấy thông tin về nhóm / người dùng Windows NT 'Site-19 \ Admin', mã lỗi 0x534. [SQLSTATE 42000] ( Lỗi 15404)).

Bây giờ, 'Site-19' là tên máy tính cũ, đã được thay đổi và máy chủ đã được đặt lại. Tôi kết nối thủ công bằng cách sử dụng 'Site-28', số trang web mới và nó hiển thị cho tôi là được kết nối với Máy chủ SQL với Site-28 \ Admin. Tuy nhiên, khi tôi xem các thuộc tính của công việc Đại lý, nó hiển thị chủ sở hữu là Site-19 \ Admin và khi tôi cố gắng duyệt để người dùng thay đổi, Site-28 \ Admin không hiển thị dưới dạng tùy chọn , chỉ Trang web-19 \ Quản trị viên. Nếu tôi viết ra một công việc mới từ công việc này và thay đổi chủ sở hữu thành 'Site-28 \ Admin', thì công việc mới được tạo với chủ sở hữu 'Site-19 \ Admin'.

Tìm kiếm trong sys.servers (hoặc thông qua sp_helpserver), tôi chỉ có một mục: tên máy tính hiện tại. Tuy nhiên, SELECT @@ SERVERNAME trả về tên máy phát triển ban đầu (hai tên thay đổi trước đây).

Nói tóm lại, tôi không thể chạy công việc SQL Server Agent quan trọng này vì nó thuộc về người dùng không còn tồn tại và tôi không thể tìm ra cách thay đổi hoặc tạo nó như một người dùng chính xác.


Cảm ơn các liên kết. Theo đề nghị của bạn, tôi cũng hỏi nó ở đó. Tôi nghĩ rằng nó cũng hợp lệ ở đây, vì trong khi câu hỏi liên quan đến cơ sở hạ tầng nhiều hơn, câu trả lời rất có thể liên quan đến mã và cũng có rất nhiều câu hỏi về phương pháp SQL Server ở đây.
Geo Ego

Và điều gì xảy ra nếu bạn thả máy chủ 'Site-28'? Điều gì hiển thị sp_helpserver? Bạn có thể xóa công việc cũ và tạo mới không?

1
Thật thú vị, khi tôi cố gắng thả 'Site-28', nó sẽ cho tôi biết rằng nó không thể được tìm thấy. Khi tôi cố gắng thêm nó, nó nói rằng nó đã tồn tại. Nếu tôi tạo công việc mới, cho dù thông qua trình hướng dẫn hoặc kịch bản công việc từ bản gốc, nó luôn tạo công việc với 'Site-19 \ Admin' với tư cách là chủ sở hữu.
Geo Ego

Vì vậy, máy chủ vật lý cũ đã được gán một tên mới (và thay đổi này cũng được thực hiện trong DNS) và CHỌN @@ SERVERNAME trên hộp được đổi tên có trả lại tên mới không?
jl01

1
Tôi đã hợp nhất câu hỏi được chuyển vào câu hỏi này, vì vậy tất cả các câu trả lời được hợp nhất.
jcolebrand

Câu trả lời:


7

Khi bạn thêm tên máy chủ mới bằng sp_addserver, bạn có nhớ bao gồm chỉ định "cục bộ". Đó là thẻ cập nhật siêu dữ liệu cho @@ SERVERNAME. Thêm thông tin.

sp_addserver 'servername', local

Chỉ là một lưu ý @@ServerNamekhông cập nhật cho đến khi tôi khởi động lại SQL Server
fiat

7

Tôi tìm thấy câu trả lời ngày hôm qua với sự giúp đỡ của một người bạn của tôi. Tôi đã phải đăng nhập qua SSMS với một người dùng khác ngoài thông tin đăng nhập Windows mà tôi đang cố sử dụng, xóa thông tin đăng nhập cũ và thêm lại thông tin đăng nhập Windows của mình. Sau đó, tôi đã có thể chuyển quyền sở hữu công việc một cách chính xác, SQL có thể lấy dữ liệu người dùng từ Windows và tất cả đều đúng với thế giới.


Tôi đã áp dụng câu trả lời này của AND @ brian-hiệp sĩ. Để thay đổi quyền sở hữu db, tôi đã sử dụng điều này SELECT 'use ' + DB_NAME(database_id) + ';EXEC sp_changedbowner ''sa'';' FROM sys.databases where DB_NAME(database_id) like 'MyDbs%';. Sau đó tôi đã có thể bỏ đăng nhập xấu
fiat

4

Tôi sử dụng cách sau để xác định các vấn đề và xây dựng thả chính xác và thêm các câu lệnh, nếu bạn nhận được TẤT CẢ OK, thì bạn không cần phải làm gì nếu không bạn cần phải chạy các lệnh.

declare @currentName as nvarchar(128)
declare @newName as varchar(max)
declare @serverName as varchar(max)
declare @serverInstance as varchar(max)

select  @currentName = @@SERVERNAME
select @serverInstance = cast(serverproperty('InstanceName') as varchar(max))
select  @serverName = cast(serverproperty('MachineName') as varchar(max))

set @newName = @serverName

if (@serverInstance <> '') 
begin
      set @newName = @serverName + '\' + @serverInstance
end

if (@currentName <> @newName)
Begin
      print 'sp_dropserver ''' + @currentName + '''';
      print 'go'
      print 'sp_addserver ''' + @newName + ''',local'
      print 'go'
end
else
Print 'ALL OK'

Sử dụng tập lệnh đó, tôi có thể xác định rằng tôi cần phải tự bỏ tên máy chủ cũ và thêm tên mới. Tôi đã làm như vậy, nhưng tôi vẫn có những vấn đề tương tự.
Geo Ego

Bạn đã khởi động lại ví dụ?

Vâng, ví dụ đã được khởi động lại sau đó.
Geo Ego

Xin lỗi anh chàng phải cúi đầu ra, không chắc vấn đề có thể là gì.

0

Có một vấn đề tương tự: đã thay đổi tên máy chủ của máy tính nơi SQL Server và SQL Server Agent đang chạy. Công việc được giao cho. Sau khi tạo người dùng tạm thời / đăng nhập vào SSMS bằng cách sử dụng / thả người dùng tạm thời mới này và tạo tên đăng nhập (công khai và sysadmin private!) / Giao lại công việc cho Đăng nhập lại này, mọi thứ đều ổn. Có lẽ bạn có thể thao tác một bảng hệ thống để phản ánh cùng một thay đổi; nhưng phương pháp trên không phải là rủi ro.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.