我已经搜索和搜索,无法解决我的问题。我实际上不确定这是否可能,但我想我会在这里发布并检查。
问题:
我有一个存储过程,我在其中进行了以下调用(有 2 个,因为我尝试了不同的事情,但都失败了):
SET @olddate = '1606'
SET @newdate = '1706'
SET @TableName = 'sometablename'
SET @sql = 'SP_RENAME ''[DBName' + @olddate + '.dbo.' + @TableName + @olddate +'].[ColumnName' + @olddate + 'restofname]'',''[ColumnName' + @newdate + 'restofname]'''
EXECUTE sp_executesql @sql
其他选项:
SET @olddate = '1606'
SET @newdate = '1706'
SET @TableName = 'sometablename'
SET @old = '[DBName' + @olddate + '.dbo.' + @TableName + @olddate+']."[ColumnName' + @olddate + 'restofname]"'
SET @new = 'ColumnName' + @newdate + 'restofname'
EXECUTE sp_rename @objname = @old,@newname = @new, @objtype = 'COLUMN'
我将它保存在一个存储过程中,然后在另一个具有不同数据库上下文的查询中运行它,并首先得到以下错误:
在当前数据库“[其他数据库]”中找不到名称为“[DBName.dbo.TableName.ColumnName]”的项目,因为@itemtype 输入为“(null)”。
这是第二个:
参数@objname 不明确或声明的@objtype (COLUMN) 错误。
现在,我想知道的是:我什至可以这样做吗?编写一个存储过程,在一个数据库的表中运行 sp_rename,然后从另一个数据库调用该存储过程?
我还尝试了在我的旧列名和新列名的部分周围放置左括号和右括号,[ 和 ] 的所有排列。还尝试将 N 放在字符串之前。虽然这有点反复试验,但到目前为止没有任何效果。