T-SQL存储过程的错误

T-SQL存储过程的错误

问题描述:

我收到以下错误,当我在SQL Server 2008 Management Studio中执行SP:T-SQL存储过程的错误

Msg 208, Level 16, State 6, Procedure BackupDB, Line 36 

Invalid object name 'dbo.BackupDB'. 

use [Master]; 
go 
alter procedure dbo.BackupDB 
    @dbName varchar(128), 
    @path varchar(256) 
as 
begin 
    declare @device1 varchar(256); 
    declare @device2 varchar(256); 
    declare @path1 varchar(256); 
    declare @path2 varchar(256); 
    declare @sql varchar(500); 
    if @dbName is null or @path is null 
     raiserror('Error: Database name and/or Path missing', 10, 1); 
    if not exists(select * from sys.databases where name = @dbName) 
     raiserror('Database %s does not exist', 10, 1, @dbName); 
    begin 
     set @sql = 'ALTER DATABASE ' + @dbName + '; SET RECOVERY FULL;'; 
     exec(@sql); 
     set @device1 = @dbName + '_Data'; 
     set @device2 = @dbname + '_Log'; 
     set @path1 = @path + '\' + @dbname + '_Data.bak'; 
     set @path2 = @path + '\' + @dbname + '_Log.bak'; 
     print 'path :' + @path1; 
     print 'path :' + @path2; 
     exec sp_addumpdevice 'disk', @device1, @path1; 
     exec sp_addumpdevice 'disk', @device2, @path2; 

     backup database @dbName TO @device1; 
     backup log @dbName TO @device2; 
    end 
end 
go 

这意味着你没有创建的过程。再次运行它作为CREATE PROCEDURE

+0

谢谢,它现在有效。但是我创建了这个SP,它确实出现在工作室的资源管理器中,为什么它会抛出此消息? – DRags 2009-11-10 19:55:36

+0

可能是因为你是不是在同一个数据库运行的命令,你正在寻找(至少在这就是为什么我得到这些所有的时间)。 – erikkallen 2009-11-10 22:24:09

+0

也有可能它不是作为dbo创建的。但some_other_schema。 – 2009-11-11 18:45:45

变化:

alter procedure dbo.BackupDB 

到:

create procedure dbo.BackupDB as 
+0

谢谢。它现在有效。 – DRags 2009-11-10 20:42:56

的SP需要创建。 SP的顶部可以是如:

使用[主];

CREATE PROCEDURE dbo.BackupDB
--alter过程dbo.BackupDB
@DbName VARCHAR(128),
@path VARCHAR(256)
作为
开始

在ALTER线被注释掉了。然后在你执行程序&创建它之后,你可以注释掉创建行&取消注释alter line,如

使用[Master];

- 创建过程dbo.BackupDB
ALTER过程dbo.BackupDB

@dbName varchar(128),<br> 
@path varchar(256)<br> 


开始

希望这有助于

卡托

+0

谢谢。它现在有效。 – DRags 2009-11-10 20:42:17