0
我得到今天釘由一個錯字,它是一個簡單的拼寫錯誤,當我定義的腳本Sql Server 2005
下創建一個存儲過程,我忘了在END
語句和GRANT
語句之間的GO
聲明,被列入這導致了GRANT
聲明在存儲過程定義中並在存儲過程結束時運行(使用SQL Profiler進行驗證)。爲什麼此語句包含在存儲過程定義中?
下面是代碼:
USE [TestGround]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[FooProc]
AS
BEGIN
SELECT * FROM dbo.Foo
END
-- a GO statement is missing here..
GRANT EXECUTE ON [dbo].[Foo] TO dbo
我明白GO
標誌着一個批次的結束,但我很驚訝地看到,GRANT
聲明被列入存儲過程中,我從來沒有忘記GO
之前的聲明沒有看到過這個問題。
難道有人請向我解釋爲什麼會發生這種情況?
我認爲這是答案,但有時它最好澄清。 – 2014-09-02 09:36:58