Tsql T-SQL存储过程错误

Tsql T-SQL存储过程错误,tsql,Tsql,在SQL Server 2008 Management Studio中执行SP时出现以下错误: 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

在SQL Server 2008 Management Studio中执行SP时出现以下错误:

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

这意味着您尚未创建过程。当创建过程更改时再次运行它:

alter procedure dbo.BackupDB
致:


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

使用[掌握]

创建过程dbo.BackupDB
--更改过程dbo.BackupDB
@dbName varchar(128),
@路径varchar(256)
as
开始

Alter行被注释掉了。然后,在执行过程并创建它之后,您可以注释掉create行并取消注释alter行,例如

使用[掌握]

--创建过程dbo.BackupDB
更改过程dbo.BackupDB

@dbName varchar(128),<br>
@path varchar(256)<br>
@dbName varchar(128),
@路径varchar(256)
as
开始

希望这有帮助


卡托

谢谢,现在可以用了。但是我创建了这个SP,它确实出现在工作室的资源管理器中,为什么它会抛出这个消息呢?可能是因为您没有在正在查看的同一个数据库中运行该命令(至少这就是为什么我一直得到这些命令的原因)。也可能它不是作为dbo创建的。但有些是另一种模式。
@dbName varchar(128),<br>
@path varchar(256)<br>