2017-10-04 66 views
0

創建過程中的DB我想執行使用node-mssql,在SQL Server執行2017年精這個(簡體)查詢:SQL服務器:不使用[GO]

USE [Journal] 
[GO] 

CREATE PROCEDURE [dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID 
[GO] 

node-mssql使用[GO]聲明語法錯誤,需要分號,所以我試試這個:

USE [Journal]; 

CREATE PROCEDURE [dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID; 

現在,我們得到的錯誤:

CREATE/ALTER PROCEDURE' must be the first statement in a query batch.

因此,讓我們試試這個:

CREATE PROCEDURE [Journal].[dbo].[EventDelete] 
    @NotificationID INT 
AS 
    DELETE Notification 
    WHERE NotificationID = @NotificationID; 

現在,我們得到

RequestError: 'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.

自然離不開它會嘗試連接到主錯誤的任何DB聲明:

CREATE PROCEDURE permission denied in database 'master'.

回答

0

這麼寫,真正的問題努力設定自己的想法。

原因是存儲過程需要在一個批處理中創建,其中[GO]表示,沒有別的。

使用.batch('USE [Journal]')方法執行USE [Journal]作爲一個批處理,然後執行SQL到CREATE PROCEDUCE作爲新的.batch(...)執行。

除非在node-mssql中有另外一種允許多批次執行的方法嗎?

+1

在大多數語言/環境中,人們可以(並且通常會)指定建立連接時要使用的數據庫。這是一個很好的開發習慣,原因很多 - 這只是一個。 – SMor

+0

好點,連接設置爲Master;將程序添加到不同的DB應該斷開並重新連接? – Tobin