2

sp_renameソース (列名を日付に変更する Excel ファイル) を制御できないため、変数を使用してストアド プロシージャを使用しようとしています。

テーブルを削除してから、そのテーブルをインポートします。次に、そのテーブルの列名を変更したいので、スキーマクエリを使用して列が現在何であるかを調べて、次のように変更できるようにしsp_renameます。

USE ESS
GO

DECLARE @TotalName NVARCHAR(255)
DECLARE @ColName NVARCHAR(255)
DECLARE @NewName NVARCHAR(255)

SELECT
    @ColName = column_name
FROM
    information_schema.columns
WHERE 
    TABLE_SCHEMA = 'dbo'
    AND TABLE_NAME = 'serverinv_unix_system_assignments_staging'
    AND ordinal_position = 1;

SET @TotalName = CONCAT(N'dbo.serverinv_unix_system_assignements_staging.' ,@ColName)
SET @NewName = ''''+ @TotalName+ ''','''+''+'server_name'+''','''+'COLUMN'';'+''

-- Select @NewName

EXEC sp_rename @NewName

以下のように明示的に入力すると機能します。

 USE ESS
 GO

 EXEC sp_rename 'dbo.serverinv_unix_system_assignments_staging.Hostname as of 8/26/2018','server_name','COLUMN';
   GO

最初のコードセットで発生するエラーは

メッセージ 201、レベル 16、状態 4、プロシージャ sp_rename、行 0 [バッチ開始行 2]
プロシージャまたは関数 'sp_rename' には、指定されていないパラメータ '@newname' が必要です。

4

2 に答える 2