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é?
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
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
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.
À travers SSMS, j'ai créé un nouveau schéma en:
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
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO
ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
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
Découvrez MSDN ...
CREATE SCHEMA
: http://msdn.Microsoft.com/en-us/library/ms189462.aspx
Ensuite
ALTER SCHEMA
: http://msdn.Microsoft.com/en-us/library/ms173423.aspx
Ou vous pouvez le vérifier sur SO ...
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'
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.
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
Au cas où quelqu'un cherche une version inférieure -
Pour SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employees', @newowner = 'exe'