Quantcast
Channel: ฟอรัม Getting started with SQL Server
Viewing all articles
Browse latest Browse all 8428

Need help with dynamic sql

$
0
0

I had a bug after using my mouse to rename a db so I found an article on how to rename the 'logical' db name.

http://www.mssqltips.com/sqlservertip/1891/best-practice-for-renaming-a-sql-server-database/

I was trying to encapsulate his ideas into an SP (it compiles fine) but am getting an error when I try to execute it

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '@CurrentLogicalFileName'.

if object_id('renameThisDatabase') is not null drop proc renameThisDatabase 
go
Create Procedure renameThisDatabase 
		@CurrentDisplayName  nvarchar(2000),
		@CurrentLogicalFileName nvarchar(2000),
		@NewLogicalFileName  nvarchar(2000)
As
Declare @CurrentLogicalFileName_Log  nvarchar(2000)
Set @CurrentLogicalFileName_Log = @CurrentLogicalFileName + '_log'
Declare @NewLogicalFileName_Log  nvarchar(2000)
set @NewLogicalFileName_Log  =@NewLogicalFileName + '_log'
Declare @sql nvarchar(1000)

Set @sql = 'ALTER DATABASE [@CurrentDisplayName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; '
Set @sql = @sql +  'ALTER DATABASE [@CurrentDisplayName] MODIFY FILE (NAME=@CurrentLogicalFileName, NEWNAME=@NewLogicalFileName);'
Set @sql = @sql +  'ALTER DATABASE [@CurrentDisplayName] MODIFY FILE (NAME=@CurrentLogicalFileName_Log, NEWNAME= @NewLogicalFileName_Log);'
Declare @DataTypes nvarchar(2000) =  N'@CurrentDisplayName nvarchar(2000), @CurrentLogicalFileName nvarchar(2000),  @CurrentLogicalFileName_Log  nvarchar(2000), '
set @DataTypes = @DataTypes + '@NewLogicalFileName nvarchar(2000),  @NewLogicalFileName_Log  nvarchar(2000) '
exec sp_executesql @sql, @DataTypes, @CurrentDisplayName = @CurrentDisplayName, @CurrentLogicalFileName = @CurrentLogicalFileName,
@CurrentLogicalFileName_Log = @CurrentLogicalFileName_Log, @NewLogicalFileName = @NewLogicalFileName, 
@NewLogicalFileName_Log = @NewLogicalFileName_Log


Viewing all articles
Browse latest Browse all 8428

Trending Articles