我在SQL Server 2008新增 stored procedure , 這個SP主要的功能是使用linked server 連接另一台資料庫伺服器, 並 Update 或Insert into其中一個Table
剛開始先用 Management Studio新增一個SQL Query測試語法都沒問題, 執行時也都正常運作, 沒有錯誤訊息.
但是新增SP後, 把程式碼Copy 至SP內, 按執行鈕(儲存SP時, 要先執行),
程式碼大致如下(已刪減掉多餘程式碼):
CREATE PROCEDURE PS_TEST
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS(SELECT name FROM sys.servers WHERE name = 'erpdb1')
BEGIN
--=====建立連接伺服器, 將伺服器加入 sys.servers================
EXEC sp_addlinkedserver
@server = 'erpdb1', --被訪問的伺服器别名
@srvproduct = '',
@provider = 'MSDASQL',
@provstr = 'DRIVER={SQL Server};SERVER=192.168.6.11;
UID=sa;PWD=password;Database=DB_Name'
--建立連接遠端伺服器登入映射
EXEC sp_addlinkedsrvlogin
@rmtsrvname ='erpdb1',
@useself = 'false',
@locallogin = NULL,
--遠端伺服器登入帳號
@rmtuser = 'sa',
--遠端伺服器登入密碼
@rmtpassword = 'password'
GO
END
select 'HELLO WORLD'
IF EXISTS(SELECT name FROM sys.servers WHERE name = 'erpdb1')
begin
sp_dropserver 'erpdb1','droplogins' --移除連接
GO
end
SET NOCOUNT OFF;
GO
END
GO
出現下面的錯誤訊息 -------
訊息 102,層級 15,狀態 1,程序 PS_TEST,行 29
接近 'password' 之處的語法不正確。
訊息 156,層級 15,狀態 1,行 3
接近關鍵字 'select' 之處的語法不正確。
訊息 102,層級 15,狀態 1,行 7
接近 'sp_dropserver' 之處的語法不正確。
訊息 156,層級 15,狀態 1,行 3
接近關鍵字 'SET' 之處的語法不正確。
訊息 102,層級 15,狀態 1,行 1
接近 'END' 之處的語法不正確。
請問各位大大, 我哪裡寫錯了...>_<
基本上go還是可以用的,並無影響
你先確認:
1.變數名稱有無宣告??
例如: Declare @provstr varchan (20)2.要指定****變數名稱的值,需加SET
例如: SET @provstr = 'DRIVER={SQL Server};SERVER=192.168.6.11;
UID=sa;PWD=password;Database=DB_Name'