2017-10-01 8 views
0

Nous avons une instance SQL Server 2012 qui est la base de données pour notre système de sécurité. Maintenant, nous avons un scénario dans lequel nous voulons permettre à une autre équipe de sélectionner certains enregistrements dans SQL Server, c'est-à-dire que nous avons créé quatre vues pour leurs besoins. Mais, nous ne voulons pas leur fournir ou lister toutes nos tables, mais seulement permettre à ces quatre vues de voir et interroger dans notre système. Comme je passe en revue de nombreux documents, il est clair que nous pouvons le faire en faisant de notre serveur SQL Server un serveur lié.Comment faire de votre serveur un serveur lié pour les vues sélectionnées?

Quelle est la meilleure façon de le faire via un serveur lié?

Répondre

1

Les vues sont-elles dans un schéma spécifique? Essayez d'accorder aux utilisateurs l'accès à ce schéma, afin qu'ils puissent seulement lire et voir des méta.

https://docs.microsoft.com/en-us/sql/relational-databases/security/metadata-visibility-configuration

+0

A présent, nous avons un seul schéma et toutes les vues et tables sont sur le même schéma – aryan

+1

Les schémas sont le moyen le plus naturel de segmenter un accès . –

+0

donc nous devons créer un schéma séparé et mettre les vues là. – aryan

1

nous ne voulons pas fournir ou liste de toutes nos tables pour eux, mais seulement permettent ces quatre points de vue de voir et d'interroger dans notre système.

Vous n'avez pas besoin de serveur lié pour cela.

Tout ce dont vous avez besoin est d'accorder SELECT permission sur ces 4 vues.

Lorsque vous créez un utilisateur dans une base de données et n'y accordez aucune autorisation, il ne voit aucune table/vue utilisateur. Nous ne pouvons voir et interroger que les objets sur lesquels vous accorderez les permissions

+0

Alors, dans quel cas le serveur lié est implémenté? – aryan

+0

Le serveur lié est implémenté lorsque vous avez deux serveurs et que vous souhaitez élaborer des données à partir de ces deux serveurs. c'est-à-dire que vous devez écrire des requêtes comme select * from server2.RemoteDB.dbo.myRemoteTable rejoindre dbo.myLocalTable – sepupic