2009-11-10 55 views
1

我收到以下錯誤,當我在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 

回答

1

這意味着你沒有創建的過程。再次運行它作爲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

1

變化:

alter procedure dbo.BackupDB 

到:

create procedure dbo.BackupDB as 
+0

謝謝。它現在有效。 – DRags 2009-11-10 20:42:56

0

的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