2012-10-30 80 views
0

我不知道如何配置OpenQuery函數。SQL Server中的OpenQuery

我想用OpenQuery查詢測試項目中的數據庫。但我不知道如何配置servername參數

DECLARE @Sql varchar(max) 
DECLARE @SQLExcuteSentence varchar(max) 

SET @Sql = 'declare @UserID INT 
select @UserID = 1 

declare @TotalGroupByFields nvarchar(2000) 
select @TotalGroupByFields = ''Media'' 

declare @CostDataFileds nvarchar(2000) 
select @CostDataFileds = '''' 

declare @OtherDataFields nvarchar(max) 
select @OtherDataFields = ''MonitoringSpotNumber,MonitoringTotalSeconds,BaseCost,ColourLoading,PositionLoading,WeekendLoading,Discount'' 

declare @MasterFilterId nvarchar(max) 
select @MasterFilterId =''DateRange=20060601-20121231''+char(13)+''IncludeGuests=0'' 

declare @RatingTargetId nvarchar(2000) 
select @RatingTargetId ='''' 

declare @IsEnableFinancialCloseDate INT 
select @IsEnableFinancialCloseDate = 0 

declare @MasterDisplayFormat nvarchar(2000) 
select @MasterDisplayFormat = ''5'' 

exec [dbo].[USP_MatrixReport] @UserID, @TotalGroupByFields, @CostDataFileds, @OtherDataFields, @MasterFilterId, @RatingTargetId, @IsEnableFinancialCloseDate, @MasterDisplayFormat, 0' 

SET @SQLExcuteSentence = 'SELECT * FROM OPENQUERY(SQLConn,' + '''' + @Sql + '''' + ')' 
EXEC (@SQLExcuteSentence); 

SQLConn是什麼?

+0

當您找到有關'SQLConn'的問題的答案後,您可能會遇到另一個問題。你的'@ Sql'值包含引號。通過將它簡單地連接到動態查詢字符串中在OPENQUERY中使用它可能會破壞您的查詢。所以,不要只是'... + @Sql + ...'使用'... + REPLACE(@Sql,'''',''''')+ ...'(在SET中@ SQLExcuteSentence'語句)。 –

回答

2

OPENQUERY要求您首先使用sp_addlinkedserver設置鏈接服務器。這是連接字符串將被設置的地方。

之後,您可以使用OPENQUERY來激發對鏈接服務器的查詢。

1

沒有SQL Server Management Studio中它看起來像這樣的本地主機:

EXEC sp_addlinkedserver 
@server='LOCALSERVER',    -- name definition for later use in OpenQuery 
@srvproduct='SQLSERVER',    
@provider='SQLNCLI',     -- provider name 
@datasrc='SERVERNAME\INSTANCENAME' -- im not sure if there should be '\' or not 

與Excel文件(基於Manoj代碼)其他例子:

EXEC sp_addLinkedServer 
@server= N'XLSX_2010', 
@srvproduct = N'Excel', 
@provider = N'Microsoft.ACE.OLEDB.12.0', 
@datasrc = N'C:\Users\SomeUser\Desktop\file.xlsx', 
@provstr = N'Excel 12.0; HDR=Yes'; 

實例與SQL Server Management Studio中本地主機並且沒有:

http://sqlserverplanet.com/sql-server/local-linked-server

相關問題