web-dev-qa-db-fra.com

Comment forcer un administrateur système à stocker des données dans un schéma autre que dbo?

J'utilise un outil GUI pour télécharger des données dans ma base de données SQL Server 2016. L'utilisateur utilisé pour la tâche ci-dessus a reçu l'autorisation sysadmin J'ai créé un schéma dédié pour stocker les données ci-dessus. Ce schéma appartient et est par défaut au-dessus dudit utilisateur. Le problème est que lorsque je télécharge des données qu'elles stockent dans un schéma dbo au lieu d'un schéma dédié et que je ne pouvais pas révoquer le privilège sysadmin de cet utilisateur.

Veuillez me faire savoir comment télécharger des données vers ce schéma dédié sans révoquer sysadmin priv?

Merci

2
Faisal Alinn

La seule façon pour un membre du rôle serveur fixe sysadmin d'utiliser un schéma nondbo est de qualifier explicitement leurs noms d'objet avec le nom de schéma:

CREATE TABLE MySchema.TableName (...

au lieu de:

CREATE TABLE TableName (...

Il n'y a aucun moyen de contourner cela. La documentation pour ALTER USER (dans la section "Remarques") contient même une note pour:

???? Important

La valeur de DEFAULT_SCHEMA est ignorée si l'utilisateur est membre du rôle serveur fixe sysadmin . Tous les membres du rôle serveur fixe sysadmin ont un schéma par défaut de dbo.

Cela est probablement dû au fait que les connexions (au niveau de l'instance) qui sont membres du rôle serveur fixe sysadmin deviennent l'utilisateur dbo (au niveau de la base de données) dans toutes les bases de données. Pour vérifier cela, connectez-vous en tant que connexion non -sa qui est un sysadmin et exécutez ce qui suit:

SELECT SYSTEM_USER AS [Login], CURRENT_USER AS [User];
8
Solomon Rutzky