2015-08-19 12 views
6

Tôi có SQL Server 2008R2 cục bộ. Tôi đã cấu hình Máy chủ Liên kết đến một cơ sở dữ liệu từ xa.Máy chủ liên kết SQL có lỗi "không có bản đồ đăng nhập tồn tại" nếu tài khoản không phải quản trị viên được sử dụng

Máy chủ được liên kết hoạt động tốt khi tôi đăng nhập vào máy chủ cục bộ bằng tài khoản đăng nhập SQL với vai trò máy chủ sysadmin. Tôi có thể truy vấn máy chủ từ xa, vì vậy tôi biết cài đặt Máy chủ được liên kết là chính xác. Tuy nhiên, tôi sẽ gặp lỗi bên dưới nếu tôi sử dụng tài khoản không có vai trò máy chủ sysadmin.

Msg 7416, Level 16, State 2, Line 2 
Access to the remote server is denied because no login-mapping exists. 

Đối với cả hai máy chủ địa phương và từ xa, SQL đăng nhập được sử dụng (Windows authentication không được sử dụng)

Những loại an ninh Tôi cần phải cấu hình cho một tài khoản SQL đăng nhập thường xuyên sử dụng Linked Server?

+1

Nếu bạn nhấp chuột phải. thuộc tính trên định nghĩa máy chủ được liên kết và đi tới tab Bảo mật, cách thiết lập nó? Cách khác, hãy tạo kịch bản cho máy chủ được liên kết dưới dạng Tạo và dán phần 'sp_addlinkedsrvlogin' (vệ sinh mật khẩu, v.v.) –

+0

Điều gì @ Nick.McDermaid nói. Nếu nó nói Không được thực hiện, bạn cần thêm ánh xạ vào danh sách HOẶC cung cấp một trong 3 tùy chọn thay thế bên dưới trong các nút radio. –

+0

@ Nick.McDermaid, @BradD: Tôi đã thêm ánh xạ vào danh sách. Tôi đã cố gắng 'Không được thực hiện' và 'Được thực hiện bằng cách sử dụng bối cảnh bảo mật này', và cả hai tùy chọn đã không giúp đỡ. Tuy nhiên ngay sau khi tôi thêm vai trò máy chủ 'sysadmin' vào tài khoản SQL cục bộ, nó hoạt động ngay lập tức. Tại sao? – Tony

Trả lời

7

Theo this blog, tôi phải chỉ định User ID trong chuỗi nhà cung cấp nếu tài khoản không phải tài khoản sysadmin được sử dụng. Đây là một ví dụ.

EXEC master.dbo.sp_addlinkedserver 
    @server = N'MyLinkServerName', 
    @provider = N'SQLNCLI', 
    @srvproduct = 'SQLNCLI', 
    @provstr = N'SERVER=MyServerName\MyInstanceName;User ID=myUser' 

Điều này khớp chính xác với những gì tôi gặp phải và giải quyết được sự cố của tôi.

+0

Hơn một năm sau đó và bạn đã giải quyết một trong những đầu trầy xước của tôi! –

0

Là giải pháp thay thế, bạn có thể sử dụng tham số @datasrc thay vì @provstr. @dataSrc hoạt động mà không thiết lập User ID

mẫu:

EXEC master.dbo.sp_addlinkedserver @server = N'LinkServerName', @provider=N'SQLNCLI',@srvproduct = 'MS SQL Server', @datasrc=N'serverName\InstanceName' 
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LinkServerName', @locallogin = NULL , @useself = N'False', @rmtuser = N'myUser', @rmtpassword = N'*****' 

Tôi đã thêm một nhận xét here cũng vậy, nhưng nó không nhìn thấy được (không biết tại sao).

Các vấn đề liên quan