2013-05-06 37 views
14

Chúng tôi đang sử dụng phiên bản dùng thử của Azure. Chúng tôi đang cố gắng thực hiện các truy vấn máy chủ chéo từ SQL 2012 của chúng tôi trong nhà.Không thể nhận Máy chủ được Liên kết hoạt động trong Sql Azure

Dường như chúng tôi đã liên kết địa phương năm 2012 với Azure. Khi tôi đi vào Server Object ->Linked Servers trong studio quản lý, tôi thấy cơ sở dữ liệu Azure của chúng tôi.

Nhưng nếu tôi cố gắng mở các cửa hàng và các bảng, tôi nhận được một thông báo lỗi nói

Reference to database and/or server name in 'Perseus.sys.sp_tables_rowset2' is not supported in this version of SQL Server

** Perseus là tên của danh mục trong Azure Sql.

Chạy một truy vấn từ kết nối địa phương:

SELECT * FROM [azureDBServer].[Perseus].[dbo].[accounts] 

kết quả là:

OLE DB provider "SQLNCLI11" for linked server "azureDBServer" returned message 
"Unspecified error". Msg 40515, Level 16, State 2, Line 1 Reference to database and/or 
server name in 'Perseus.sys.sp_tables_info_90_rowset' is not supported in this version of 
SQL Server. 

này cùng trong nhà SQL 2012 Server là khả năng kết nối với chúng tôi trong nhà năm 2008 bởi các truy vấn máy chủ chéo và bằng cách xem cấu trúc của nó thông qua Máy chủ được Liên kết.

Tôi biết từ bài viết này Azure supports Linked Servers.

Vì vậy, tôi bị mất về những gì là sai. Quản trị viên của chúng tôi nghĩ rằng có thể chúng tôi có tài khoản Web-Sql so với tài khoản SQL doanh nghiệp. Liên kết ngăn xếp lỗi thời Azure Web vs Business SQL ngăn chặn này ngụ ý rằng phiên bản SQL KHÔNG phải là vấn đề, nhưng được đặt trước khi Azure cung cấp Máy chủ được liên kết.

Vì vậy, tôi đang cố gắng để hiểu được nếu

a) chúng ta không thiết lập một cái gì đó ngay để cung cấp SQL Liên kết?

b) chúng tôi bị giới hạn khi dùng thử?

c) chúng tôi có bị giới hạn bởi phiên bản Web SQL không?

d) bất cứ điều gì khác?

+1

là Azure nguồn hoặc đích cho máy chủ liên kết? Tôi tin rằng nó chỉ hoạt động nếu Azure là mục tiêu từ một máy chủ SQL tại chỗ. – Jaxidian

+1

@Jaxidian đúng, Azure là mục tiêu và trong khi Azure được đăng ký trong Máy chủ được liên kết trong máy chủ của chúng tôi, chúng tôi không thể Cross-đọc từ Azure thông qua của chúng tôi trong nhà 2012 –

+1

@Jaxidian, vâng, chúng tôi cũng đã thử một cách đơn giản truy vấn máy chủ chéo. xem chỉnh sửa của tôi –

Trả lời

7

Trong khi thêm máy chủ được liên kết từ Quản lý SQL, bạn không được cung cấp tùy chọn để đặt cơ sở dữ liệu mặc định. Vì vậy, hãy sử dụng một cái gì đó như bên dưới

EXEC sp_addlinkedserver 
@server='name for referring locally', -- here you can specify the name of the linked server 
@srvproduct='',  
@provider='sqlncli', -- using SQL Server native client 
@datasrc='AzureMachineName.database.windows.net', -- add here your server name 
@location='', 
@provstr='', 
@catalog='yourdatabasename' 

Tôi đã tìm ra công trình này.

+4

Tôi nhận được lỗi: Không thể tìm thấy thủ tục lưu trữ 'sp_addlinkedserver'. Cũng sử dụng Azure sql db. –

7

Cần thực thi dưới đây ba quy trình được lưu trữ để thêm SQL Azure. Sử dụng dưới đây các thủ tục lưu trữ tôi đã có thể truy vấn SQL Azure.

EXEC sp_addlinkedserver 
@server='PROD', 
@srvproduct='',  
@provider='sqlncli', 
@datasrc='azureserver.database.windows.net', 
@location='', 
@provstr='', 
@catalog='database name' 


EXEC sp_addlinkedsrvlogin 
@rmtsrvname = 'PROD', 
@useself = 'false', 
@rmtuser = 'Azure login', 
@rmtpassword = 'password' 

EXEC sp_serveroption 'PROD', 'rpc out', true 
+0

Tôi có thể thêm máy chủ đó = 'PROD' giống như giá trị nguồn dữ liệu trong trường hợp của tôi. Cảm ơn rất nhiều. – ozzy432836

+0

Tuyệt vời! chỉ cần những gì tôi cần –

1

Bạn có thực sự thiết lập kết nối với cơ sở dữ liệu perseus không? Bằng cách nhìn vào thông báo lỗi bạn đang gửi một truy vấn với 3 phần hoặc 4 phần tên Azure mà không làm việc như là trong Azure. Vui lòng kiểm tra truy vấn của bạn và đặt nó để sử dụng 2 tên phần và chỉ có ba tên phần nếu nó đang kết nối với cùng một cơ sở dữ liệu

+1

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. - [Từ đánh giá] (/ review/low-quality-posts/10967835) – dotnetom

+0

câu trả lời là lỗi, 3 phần/4 tên phần không hoạt động trong Azure và truy vấn phải sửa đổi –

+0

đồng ý @dotnetom, câu trả lời này thực sự nên là một bình luận. Ngạc nhiên là nó tồn tại lâu đến thế này ... Có vẻ như tôi đã giơ cờ cho chính xác lý do đó và người kiểm duyệt, trong "trí huệ" vô tận của họ cảm thấy đây là một câu trả lời. –

0

Tôi đã gặp vấn đề tương tự, nó cũng sẽ được giải quyết nếu bạn không sử dụng dấu sao trong CHỌN một phần.

SELECT Row1, Row2 FROM table 

sẽ làm việc

SELECT * FROM table 

sẽ không

+0

Vui lòng giải thích? Tôi không hiểu dấu sao phải làm gì với các bảng được liên kết. Và ví dụ của bạn gây nhầm lẫn cho tôi, bạn dường như không tham chiếu bảng từ cơ sở dữ liệu bên ngoài. Cú pháp điển hình cho các cơ sở dữ liệu được liên kết là 'SELECT * FROM [Tên máy chủ DB]. [DB/Catalogue]. [Dbo]. [Tên bảng]'. Việc bạn sử dụng tên bảng chỉ để loại bỏ liên kết. –