217

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

例:

から

dbo.Employees

exe.Employees

私はこのクエリで試しました:

ALTER SCHEMA exe TRANSFER dbo.Employees

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

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

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

4

11 に答える 11

330

スキーマの作成:

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
于 2013-03-18T17:32:23.977 に答える
40
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

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

于 2015-09-25T20:02:31.613 に答える
29

以下をお試しください

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
于 2013-03-18T17:20:13.863 に答える
13
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
于 2015-12-02T05:59:19.100 に答える
7

SSMSを使用して、次の方法で新しいスキーマを作成しました。

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

この投稿でスキーマを変更していることがわかりましたが、新しいスキーマに変更しようとすると同じ権限エラーが発生していました。SSMSにいくつかのデータベースがリストされているので、データベースを指定してみたところ、うまくいきました。

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
于 2014-10-14T21:30:13.453 に答える
4

あなたのコードは:

FROM
 dbo.Employees
TO
 exe.Employees

このクエリを試してみました。

ALTER SCHEMA exe TRANSFER dbo.Employees

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

于 2013-07-19T13:17:57.760 に答える
3

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

CREATE SCHEMA: http: //msdn.microsoft.com/en-us/library/ms189462.aspx

それで

ALTER SCHEMA: http: //msdn.microsoft.com/en-us/library/ms173423.aspx

または、SOで確認できます...

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

于 2013-03-18T17:18:32.490 に答える
2

場合によっては、より低いバージョンを探している人-

SQL Server 2000の場合:

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

于 2018-11-22T06:50:09.547 に答える
1

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

于 2015-12-03T18:55:38.390 に答える
0

SQLでオブジェクトの名前を変更する場合は十分に注意してください。自分がしていることに完全に慣れていない場合、依存関係が失敗する可能性があります。これは、環境に適切なアクセス権があれば、名前を変更するのに簡単に(あまりにも)機能すると言っていますが、次のようになります。

exec sp_rename 'Nameofobject', 'ReNameofobject'
于 2013-03-18T17:17:31.617 に答える
0

また、デフォルトのスキーマ「dbo」からウィザードからスキーマにデータを転送することもできます。1-データベース図をダブルクリックします。2-certianエンティティを右クリックします->プロパティを選択します。3-IDの右側で、スキーマ名を変更します。

于 2021-12-13T20:10:05.917 に答える