web-dev-qa-db-fra.com

Modifier le nom de schéma de la table en SQL

Je veux changer le nom de schéma de la table Employees dans la base de données. Dans la table actuelle, le nom du schéma de la base de données Employees est dbo. Je souhaite le remplacer par exe. Comment puis-je le faire ? 

Exemple:

DE 

dbo.Employees

À

exe.Employees

J'ai essayé avec cette requête:

ALTER SCHEMA exe TRANSFER dbo.Employees

Mais cela me donne une erreur:

Impossible de modifier le schéma 'exe', car il n'existe pas ou pas avoir la permission.

Qu'est-ce que j'ai raté? 

136
theChampion

Créer un schéma:

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

ALTER Schéma:  

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
211
Pandian

Essayez ci-dessous

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
24
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

Je dois toujours utiliser les crochets lorsque j'utilise la requête ALTER SCHEMA en SQL, ou je reçois un message d'erreur.

15
Lauren

À travers SSMS, j'ai créé un nouveau schéma en:

  • En cliquant sur le dossier Sécurité dans l'explorateur d'objets de mon serveur,
  • schémas avec un clic droit 
  • Sélection "Nouveau schéma ..."
  • Nommé mon nouveau schéma (exe dans votre cas)
  • Hit OK

J'ai trouvé que cet article modifiait le schéma, mais je rencontrais également la même erreur d'autorisation lorsque j'essayais de modifier le nouveau schéma. J'ai plusieurs bases de données répertoriées dans mon SSMS, alors je viens d'essayer de spécifier la base de données et cela a fonctionné: 

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

Votre code est: 

FROM
 dbo.Employees
TO
 exe.Employees

J'ai essayé avec cette requête.

ALTER SCHEMA exe TRANSFER dbo.Employees

Il suffit d'écrire create schema exe et de l'exécuter

3
user2599599
2
Chains

Soyez très très prudent lorsque vous renommez des objets en SQL. Vous pouvez faire échouer les dépendances si vous n'êtes pas complètement éloigné de ce que vous faites. Cela dit, cela fonctionne facilement (trop) pour renommer des éléments à condition que vous ayez accès à l'environnement:

exec sp_rename 'Nameofobject', 'ReNameofobject'
0
djangojazz

Assurez-vous que vous êtes dans le bon contexte de base de données dans SSMS. Vous avez la même erreur que vous, mais je savais que le schéma existait déjà. Je ne savais pas que j'étais dans le contexte 'MASTER'. ALTER a fonctionné après avoir changé le contexte de ma base de données.

0
billmack30

Pour créer un nouveau schéma, suivez les étapes ci-dessous:

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.

Pour modifier un schéma, exécutez la commande sql suivante:

ALTER SCHEMA new_schema TRANSFER dbo.Employees

0
Tahir77667

Au cas où quelqu'un cherche une version inférieure -

Pour SQL Server 2000:

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

0
iravinandan