web-dev-qa-db-ja.com

SQLでテーブルのスキーマ名を変更

データベースのテーブルEmployeesのスキーマ名を変更したい。現在のテーブルでは、Employeesデータベースのスキーマ名はdboです。これをexeに変更します。どうすればいいの?

例:

から

dbo.Employees

exe.Employees

私はこのクエリを試してみました:

ALTER SCHEMA exe TRANSFER dbo.Employees

しかし、これは私にエラーを与えます:

スキーマ 'exe'は存在しないか、権限がないため変更できません。

私は何を取りこぼしたか?

148
theChampion

スキーマを作成してください:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTERスキーマ:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
221
Pandian

以下で試してください

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

SQLでALTER SCHEMAクエリを使用するときは、常に括弧を使用する必要があります。そうしないと、エラーメッセージが表示されます。

16
Lauren

SSMSを通じて、私は新しいスキーマを作成しました。

  • サーバー内のオブジェクトエクスプローラで[セキュリティ]フォルダをクリックします。
  • 右クリックされたスキーマ
  • "New Schema ..."を選択した
  • 私の新しいスキーマに名前を付けます(あなたの場合はexe)
  • OKを打つ

私はこの投稿がスキーマを変更することを発見しましたが、新しいスキーマに変更しようとしたときにも同じパーミッションエラーを得ていました。私は私のSSMSにリストされたいくつかのデータベースを持っているので、私はデータベースを指定しようとしました、そしてそれはうまくいきました:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
5
Jason D.
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
3
Singh

あなたのコードは次のとおりです。

FROM
 dbo.Employees
TO
 exe.Employees

私はこの質問で試しました。

ALTER SCHEMA exe TRANSFER dbo.Employees

create schema exeを書いて実行するだけです。

3
user2599599

MSDNをチェックしてください...

CREATE SCHEMAhttp://msdn.Microsoft.com/ja-jp/library/ms189462.aspx

それから

ALTER SCHEMAhttp://msdn.Microsoft.com/ja-jp/library/ms173423.aspx

それともあなたはSOでそれをチェックすることができます...

T-SQLでテーブルをスキーマに移動するにはどうすればよいですか

2
Chains

Sqlでオブジェクトの名前を変更するときは、非常に注意してください。自分のしていることに完全に慣れていないと、依存関係が失敗することがあります。あなたが環境上で適切なアクセス権を持っているならば、これはものの名前を変更するために簡単に(あまりにも多く)働くと言った:

exec sp_rename 'Nameofobject', 'ReNameofobject'
0
djangojazz

SSMSで正しいデータベースコンテキストにいることを確認してください。あなたと同じエラーを得ました、しかし私はそのスキーマがすでに存在していることを知っていました。私が「マスター」の文脈にいることに気づかなかった。データベースをコンテキストに変更した後、ALTERが機能しました。

0
billmack30

新しいスキーマを作成するには、以下の手順に従ってください。

1. Open your Database. 2. Route to Security folder. 3. Inside it is a folder named Schema. 4. Right click the schema folder> New Schema. 5. Add a Schema > Click OK.

スキーマを変更するには、次のSQLコマンドを実行します。

ALTER SCHEMA new_schema TRANSFER dbo.Employees

0
Tahir77667

念のため、もっと低いバージョンを探している人 -

SQL Server 2000の場合

sp_changeobjectowner @objname = 'dbo.Employees'、@ newowner = 'exe'

0
iravinandan