2011-01-11 55 views
0

我創建了多個腳本以單獨運行,但要求將它們全部合併,以便DBA只需執行一次。問題是,我似乎無法將它們結合在一起運行。只有查詢中的第一個項目才能運行。我如何格式化這些以在一個大腳本中一起運行?在Sql Server中混合創建存儲過程並插入語句

USE [DEV] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    Create PROCEDURE [dbo].[Projects] 
     @ProjectID   int, 
     @ClientID    int 
    AS 
    BEGIN 
     .....Cool procedure here 
    END 
    GRANT EXECUTE ON [dbo].[Projects] TO Admin, Employee 

INSERT INTO random_table(stuff) 
VALUES (stuff) 
+0

如果你在插入任何東西之前和之後都放了'print'test'`? – 2011-01-11 21:10:56

+0

看看我的答覆在最後! – 2011-01-11 21:16:50

回答

4

添加語句

USE [DEV] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    Create PROCEDURE [dbo].[Projects] 
     @ProjectID   int, 
     @ClientID    int 
    AS 
    BEGIN 
     .....Cool procedure here 
    END 

    GO -- Add GO here 

    GRANT EXECUTE ON [dbo].[Projects] TO Admin, Employee 

    GO -- Add GO here 
INSERT INTO random_table(stuff) 
VALUES (stuff) 
+0

工程很棒。添加Go是所有需要的。謝謝。 – ChrisOPeterson 2011-01-11 21:57:55

2
USE [DEV] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    Create PROCEDURE [dbo].[Projects] 
     @ProjectID   int, 
     @ClientID    int 
    AS 
    BEGIN 
     .....Cool procedure here 
    END 
    GRANT EXECUTE ON [dbo].[Projects] TO Admin, Employee 
GO -- added this "go" statement 
INSERT INTO random_table(stuff) 
VALUES (stuff) 
0

插入GO每個語句後之間的GO。

0
USE [DEV] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    Create PROCEDURE [dbo].[Projects] 
     @ProjectID   int, 
     @ClientID    int 
    AS 
    BEGIN 
     .....Cool procedure here 
    END 
    GO //add Go after every statement 
    GRANT EXECUTE ON [dbo].[Projects] TO Admin, Employee 
    GO 
    INSERT INTO random_table(stuff) 
    VALUES (stuff) 

雖然,我會建議你生成數據庫模式(包括存儲過程,函數,表的創建,插入,更新用和刪除)從您的SQL Server數據庫的腳本,並與.SQL文件和你不保存不必手動放置這些GO。看看這個很好的example

相關問題