Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 631
  • Last Modified:

Cannot find the object "@dbName"

Can anyone tell me what I can do to make this work?  The stored procedure is altered successfully, but when I try to run it with the command to execute it I get the following error:

EXEC sbs_ClearAllData 'Account'

Msg 4902, Level 16, State 1, Procedure sbs_ClearAllData, Line 16
Cannot find the object "dbo.@dbName" because it does not exist or you do not have permissions.
ALTER PROCEDURE sbs_ClearAllData
	@dbName varchar(50)  <-- This is line 16, fyi
 
AS
BEGIN
 
	SET NOCOUNT ON;	
 
	ALTER TABLE [dbo].[@dbName] NOCHECK CONSTRAINT ALL;
 
	IF OBJECTPROPERTY(object_id('@dbName'), 'TableHasForeignRef') = 1  
		DELETE FROM [dbo].[@dbName]  
	else   
		TRUNCATE TABLE [dbo].[@dbName]
 
	ALTER TABLE [dbo].[@dbName] CHECK CONSTRAINT ALL
 
	IF OBJECTPROPERTY(object_id('@dbName'), 'TableHasIdentity') = 1   
	DBCC CHECKIDENT ('@dbName', RESEED, 0)
 
	-- Populate TransactionCategory
	IF (SELECT COUNT(*) FROM TransactionCategory) = 0
	BEGIN
		INSERT INTO TransactionCategory
			(Id, Code, Description, IsCredit)
		VALUES
			(NEWID(), 'D', 'Debit', 0)
		INSERT INTO TransactionCategory
			(Id, Code, Description, IsCredit)
		VALUES
			(NEWID(), 'C', 'Credit', 1)
	END
 
END

Open in new window

0
bakerOSU333
Asked:
bakerOSU333
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
>ALTER TABLE [dbo].[@dbName] NOCHECK CONSTRAINT ALL;
you cannot run that without dynamic sql.


exec ('ALTER TABLE [dbo].[' + @dbName + '] NOCHECK CONSTRAINT ALL')

Open in new window

0
 
Aneesh RetnakaranDatabase AdministratorCommented:
DBCC CHECKIDENT '@dbName, RESEED, 0)   -- no quotes
0
 
James MurrellProduct SpecialistCommented:
Personally i would check you have permission for that server, not just read access
0
 
bakerOSU333Author Commented:
angellll,

how would I fix this section of the code now?  it's closer to working, but I need to make the dbName become a column name for the id property and here is the error I get with the code snip after that:

Msg 207, Level 16, State 1, Line 1
Invalid column name 'Account'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'TableHasForeignRef'.

EXEC ('IF OBJECTPROPERTY(object_id("' + @dbName + '"), "TableHasForeignRef") = 1  
            DELETE FROM [dbo].['+ @dbName + ']  
      else  
            TRUNCATE TABLE [dbo].[' + @dbName + ']')
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
please try this:
EXEC ('IF OBJECTPROPERTY(object_id(''' + @dbName + '''), ''TableHasForeignRef'') = 1  
            DELETE FROM [dbo].['+ @dbName + ']  
      else  
            TRUNCATE TABLE [dbo].[' + @dbName + ']')

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now