я получил прибил сегодня опечаткой, его простую ошибку, когда я определил сценарий, чтобы создать хранимую процедуру под Sql Server 2005
, я забыл GO
заявление в между END
заявлением и GRANT
заявлением, это приведет к 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
заявление до этого так не видел эту проблему.
Может кто-нибудь объяснить мне, почему это происходит?
Я думал, что это был ответ, но иногда его просто лучше всего прояснить. –