2016-03-03 69 views
0

比方说,我有这样的过程:错误调用存储过程已在MS SQL Server管理创建工作室

USE [base1] 
GO 

SET ANSI_WARNINGS OFF 
GO 
IF OBJECT_ID ('dbo.MyProcedure ', 'P') IS NOT NULL DROP PROCEDURE dbo.MyProcedure ; 
GO 
CREATE PROCEDURE dbo.MyProcedure 
          @code NVARCHAR(1000), 
          @Month INT, 
          @YEAR  INT 
AS 
    SET NOCOUNT ON; 

-- my code 
GO 
-- END PROCEDURE 

我用的程序通过以下步骤:

  1. 要创建我执行程序脚本
  2. 程序在这个数据库中创建base1 not in master
  3. 我启动这个命令EXECUTE dbo.MyProcedure N'Test',03,2016; =>我得到succesfull结果
  4. 我从服务器断开,我重新
  5. 我执行此:CEXECUTE dbo.MyProcedure N'Test',03,2016; =>我得到这个错误 Could not find stored procedure 'dbo.MyProcedure'.

因此,在自定义数据库base1>Programmability >stored procedures =>我可以看到的程序存在

+2

你在正确的数据库上下文中执行?除非您指定,否则连接时将默认为“master”。 – Lankymart

+0

我使用'USE [base1] GO'在我的自定义数据库中创建了它,并且我像这样执行它:'EXECUTE dbo.MyProcedure N'test',03,2016;' – stoner

+0

您不认为这将是相关信息这个问题?花两秒钟[编辑](http://stackoverflow.com/posts/35777627/edit)。 – Lankymart

回答

1

通常,连接上的默认数据库是master。所以当你断开并重新连接时,你很有可能在master数据库中。您可以通过执行SELECT DB_NAME()进行验证。由于您在不同的数据库中创建了proc,因此在切换数据库或完全限定您的proc调用之前,执行会失败。

相关问题