回答:
SQL Serverでテーブルの名前を変更するには、sp_rename
次のコマンドを使用します。
exec sp_rename 'schema.old_table_name', 'new_table_name'
'NewName'
、フィールドそうでない場合は、あなたのテーブルのようなものを探して終わるかもしれませんdbo.dbo.NewName
。
CREATE SYNONYM [schema].[synonymName] FOR [schema].[tableName]
上記の回答のように機能するsp_renameを使用する場合は、名前を変更した後に影響を受けるオブジェクトも確認してください。これらのオブジェクトも変更する必要があるため、そのテーブルを参照します。
Pinal Daveのブログで、テーブルの依存関係のコード例をこちらに掲載しました
USE AdventureWorks
GO
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'Customer'
したがって、これらすべての依存オブジェクトも更新する必要があります
または、可能であればいくつかのアドインを使用してください。それらの一部にはオブジェクトの名前を変更する機能があり、すべて依存するオブジェクトも含まれています
exec sp_rename
LockMatchIDエラーを受信して受信した場合は、最初にuse [database]ステートメントを追加すると役立つ場合があります。
私は試した
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
-- Invalid EXECUTE statement using object "Object", method "LockMatchID".
それを修正するために私がしなければならなかったことはそれを次のように書き直すことでした:
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
テーブル名
sp_rename 'db_name.old_table_name', 'new_table_name'
カラム
sp_rename 'db_name.old_table_name.name' 'userName', 'COLUMN'
索引
sp_rename 'db_name.old_table_name.id', 'product_ID', 'INDEX'
静的およびデータ型にも利用可能
これは私が使用するものです:
EXEC sp_rename 'MyTable', 'MyTableNewName';
ここで提案されたものからは何も機能しませんでした。
SELECT *
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];
多分誰かのために役立つでしょう。
私の場合、新しいスキーマを認識しませんでした。dboも所有者でした。
更新
EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';
私のために働いた。いずれかのテーブルのPKを更新するときに自動的に生成されたスクリプトからそれを見つけました。このようにして、新しいスキーマも認識しました。
.
れている場合[]
は、テーブル名を前後に使用します。例:(...私が知っている、私が知っているが、ドットが発生する可能性があります)sp_rename '[Stupid.name]', 'NewName'
またはスキーマでsp_rename '[dbo.Stupid.name]', 'NewName'