私SQL Serverは約50のデータベースを持っているサーバーを持っています。
Loginデータベースへのアクセスを希望するクライアントのために、新しいデータベースを作成したいと思います。
しかし、私は彼らに他の49のデータベースへのアクセスを許可したくありません。
これどうやってするの?
私SQL Serverは約50のデータベースを持っているサーバーを持っています。
Loginデータベースへのアクセスを希望するクライアントのために、新しいデータベースを作成したいと思います。
しかし、私は彼らに他の49のデータベースへのアクセスを許可したくありません。
これどうやってするの?
これが私たちがとてもやりたいことだと思います。
--Step 1: (create a new user)
create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF;
-- Step 2:(deny view to any database)
USE master;
GO
DENY VIEW ANY DATABASE TO hello;
-- step 3 (then authorized the user for that specific database , you have to use the master by doing use master as below)
USE master;
GO
ALTER AUTHORIZATION ON DATABASE::yourDB TO hello;
GO
以前にユーザーを作成してそのデータベースに割り当てた場合
USE [yourDB]
CREATE USER hello FOR LOGIN hello WITH DEFAULT_SCHEMA=[dbo]
GO
次に、以下を実行して削除し、手順に従ってください
USE yourDB;
GO
DROP USER newlogin;
GO
詳細については、次のリンクをたどってください。
アップデート:
Security -> Server Rolesまた、に移動して、アクセス許可をpublic確認し、アクセス許可を削除TSQL Default TCP/TSQL Default VIA/TSQL Local Machine/TSQL Named Pipesすることもできます。connect
これを行う方法を考えている他の人のために、SQL Server2008R2以降用の次のソリューションがあります。
USE master
go
DENY VIEW ANY DATABASE TO [user]
go
これは、上記で概説した要件に正確に対応します。
これは、正解として選択されたものにトッピングすることです。実行されない場合でも、ユーザーはデータベースの残りの部分にアクセスできるという1つの欠落したステップがあります。まず、@DineshDBが提案したように実行します
1. Connect to your SQL server instance using management studio
2. Goto Security -> Logins -> (RIGHT CLICK) New Login
3. fill in user details
4. Under User Mapping, select the databases you want the user to be able to access and configure
不足している手順は次のとおりです。
5. Under user mapping, ensure that "sysadmin" is NOT CHECKED and select "db_owner" as the role for the new user.
以上です。