নতুন ব্যবহারকারী তৈরি করতে এসকিউএল সার্ভার স্ক্রিপ্ট


105

আমি এসকিউএল সার্ভার এক্সপ্রেসে একটি adminব্যবহারকারী ( abcdপাসওয়ার্ড সহ) তৈরি করতে একটি স্ক্রিপ্ট লিখতে চাই । এছাড়াও আমি এই ব্যবহারকারীর adminপুরো অধিকার নির্ধারণ করতে চাই।

উত্তর:


205

আপনার প্রশ্নের ভিত্তিতে, আমি মনে করি যে আপনি কোনও ব্যবহারকারী এবং লগইনের মধ্যে পার্থক্য সম্পর্কে কিছুটা বিভ্রান্ত হতে পারেন । একটি লগইন সামগ্রিকভাবে এসকিউএল সার্ভারে একটি অ্যাকাউন্ট - যে কেউ সার্ভারে লগ ইন করতে সক্ষম এবং যার পাসওয়ার্ড রয়েছে। একটি ব্যবহারকারী একটি নির্দিষ্ট ডেটাবেস অ্যাক্সেস সহ একটি লগইন হয়।

একটি লগইন তৈরি করা সহজ এবং একটি নির্দিষ্ট ডাটাবেসে লগইনের জন্য একটি ব্যবহারকারী অ্যাকাউন্ট তৈরি করার আগে অবশ্যই (অবশ্যই) করা উচিত :

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

এখানে কিভাবে আপনি একটি তৈরি হয় ব্যবহারকারী ব্যবহার db_owner অধিকারসহ লগইন আপনি শুধু ঘোষণা করেছিলেন:

Use YourDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;
GO

এখন, লগিনগুলি উপরে দেখানোর চেয়ে আমি কিছুটা বেশি তরল। উদাহরণস্বরূপ, ডাটাবেস ইনস্টল হওয়ার পরে উইন্ডোজ প্রশাসক অ্যাকাউন্টের জন্য একটি লগইন অ্যাকাউন্ট স্বয়ংক্রিয়ভাবে তৈরি হয় (বেশিরভাগ এসকিউএল সার্ভার ইনস্টলেশনগুলিতে)। বেশিরভাগ পরিস্থিতিতে, আমি কেবল এটি ব্যবহার করি যখন আমি একটি ডেটাবেস পরিচালনা করি (এতে সমস্ত সুবিধা রয়েছে)।

তবে আপনি যদি কোনও অ্যাপ্লিকেশন থেকে এসকিউএল সার্ভারটি অ্যাক্সেস করতে যাচ্ছেন তবে আপনি "মিশ্র মোড" (উইন্ডোজ এবং এসকিউএল উভয় লগইন) এর জন্য সার্ভারটি সেট আপ করতে এবং উপরের মত বর্ণিত একটি লগইন তৈরি করতে চাইবেন। তারপরে আপনি আপনার অ্যাপ্লিকেশনের জন্য যা প্রয়োজন তার উপর ভিত্তি করে সেই এসকিউএল লগইনে "অনুদান" প্রদান করবেন। আরও তথ্যের জন্য এখানে দেখুন ।

আপডেট: হারুন আপনার লগইন অ্যাকাউন্টে একটি প্রস্তুত ভূমিকা অর্পণ করতে sp_addsrvrolmember ব্যবহারের দিকে ইঙ্গিত করে। এটি ম্যানুয়ালি সুযোগগুলি দেওয়ার চেয়ে দ্রুত এবং সহজ - এটি একটি ভাল ধারণা। আপনি গুগল করলে আপনি প্রচুর লিঙ্ক দেখতে পাবেন। তবে আপনাকে অবশ্যই একটি লগইন এবং ব্যবহারকারীর মধ্যে পার্থক্য বুঝতে হবে।


4
ঠিক আমার যা প্রয়োজন, ধন্যবাদ আমি এটি এত সহজ হবে আশা করিনি - এবং এটি পুরোপুরি কাজ করার জন্য !!
ডেভ

34

পুরো সার্ভার, বা একটি নির্দিষ্ট ডাটাবেসের পুরো অ্যাডমিন অধিকার? আমি মনে করি অন্যরা একটি ডাটাবেসের জন্য উত্তর দিয়েছে, তবে সার্ভারের জন্য:

USE [master];
GO
CREATE LOGIN MyNewAdminUser 
    WITH PASSWORD    = N'abcd',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
GO
EXEC sp_addsrvrolemember 
    @loginame = N'MyNewAdminUser', 
    @rolename = N'sysadmin';

আপনি কি SQL সার্ভার এক্সপ্রেস সংস্করণ আপনি ব্যবহার করছেন তার উপর নির্ভর করে CHECK_ পরামিতি বন্ধ ত্যাগ করার প্রয়োজন হতে পারে (এটা প্রায় সবসময় দরকারী আপনার প্রশ্নের এই তথ্য অন্তর্ভুক্ত করা)।


ঠিক কী আমি চাই আমি সি # এর সাথে মাইক্রোসফ্ট.স্কুলসার্ভার.ম্যানেজমেন্ট.সোম.লগিন ক্লাস ব্যবহার করে লগইন তৈরি করার চেষ্টা করছিলাম। তবে আমি তৈরি করতে পারিনি এটি সি # ধন্যবাদ
তে

6

আপনি যদি জেনেরিক স্ক্রিপ্ট তৈরি করতে চান তবে আপনি এটির সাথে আপনার ব্যবহারকারীর নাম এবং ডাটাবেস নামের সাথে একটি প্রতিস্থাপনের সাথে একটি এক্সিকিউট স্টেটমেন্ট দিয়ে করতে পারেন

Declare @userName as varchar(50); 
Declare @defaultDataBaseName as varchar(50);
Declare @LoginCreationScript as varchar(max);
Declare @UserCreationScript as varchar(max);
Declare @TempUserCreationScript as varchar(max);
set @defaultDataBaseName = 'data1';
set @userName = 'domain\userName';
set @LoginCreationScript ='CREATE LOGIN [{userName}]
FROM WINDOWS 
WITH DEFAULT_DATABASE ={dataBaseName}'

set @UserCreationScript ='
USE {dataBaseName}
CREATE User [{userName}] for LOGIN [{userName}];
EXEC sp_addrolemember ''db_datareader'', ''{userName}'';
EXEC sp_addrolemember ''db_datawriter'', ''{userName}'';
Grant Execute on Schema :: dbo TO [{userName}];'
/*Login creation*/
set @LoginCreationScript=Replace(Replace(@LoginCreationScript, '{userName}', @userName), '{dataBaseName}', @defaultDataBaseName)
set @UserCreationScript =Replace(@UserCreationScript, '{userName}', @userName)
Execute(@LoginCreationScript)

/*User creation and role assignment*/
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', @defaultDataBaseName)
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db2')
Execute(@TempUserCreationScript)
set @TempUserCreationScript =Replace(@UserCreationScript, '{dataBaseName}', 'db3')
Execute(@TempUserCreationScript)

আমি অনিচ্ছাকৃতভাবে এই উত্তরটিকে কমিয়ে দিয়েছি তবে এখন আমি সম্পাদনা না করে আমার ডাউনভোটটি পূর্বাবস্থায় ফেরাতে পারি না। আমি আমার ডাউনটোটটি সরিয়ে ফেলতে জাঙ্ক টেক্সটটি রেখেছি তবে এখন আমি জাঙ্ক টেক্সটটিও
ডাউনভোটকে

4

তুমি ব্যবহার করতে পার:

CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO 

লগইন তৈরি করতে (দেখুন এখানে আরো বিস্তারিত জানার জন্য)।

তারপরে আপনার ব্যবহারের প্রয়োজন হতে পারে:

CREATE USER user_name 

নির্দিষ্ট ডাটাবেসের জন্য লগইনের সাথে যুক্ত ব্যবহারকারী তৈরি করতে আপনি তাদের খুব অ্যাক্সেস দিতে চান grant

( বিস্তারিত জানার জন্য এখানে দেখুন )

আপনি এটি ব্যবহার করতে পারেন:

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name

আপনি ব্যবহারকারীদের যে প্রকল্পটি দিয়েছেন তার জন্য অনুমতিগুলি সেট আপ করতে।

( বিস্তারিত জানার জন্য এখানে দেখুন )

আপনি যে দুটি আরও কমান্ড কার্যকর খুঁজে পেতে পারেন সেগুলি হ'ল আল্টার ইউজার এবং আলেটার লগইন


3
CREATE LOGIN AdminLOGIN WITH PASSWORD = 'pass'
GO


Use MyDatabase;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'AdminLOGIN')
BEGIN
    CREATE USER [AdminLOGIN] FOR LOGIN [AdminLOGIN]
    EXEC sp_addrolemember N'db_owner', N'AdminLOGIN'
    EXEC master..sp_addsrvrolemember @loginame = N'adminlogin', @rolename = N'sysadmin'
END;
GO

নেটওয়ার্ক ব্যবহারের জন্য এটি আপনাকে সম্পূর্ণ সহায়তা করে:

1- Right-click on SQL Server instance at root of Object Explorer, click on Properties
Select Security from the left pane.

2- Select the SQL Server and Windows Authentication mode radio button, and click OK.

3- Right-click on the SQL Server instance, select Restart (alternatively, open up Services and restart the SQL Server service).

4- Close sql server application and reopen it

5- open 'SQL Server Configuration Manager' and tcp enabled for network

6-Double-click the TCP/IP protocol, go to the IP Addresses tab and scroll down to the IPAll section.

7-Specify the 1433 in the TCP Port field (or another port if 1433 is used by another MSSQL Server) and press the OK 

8-Open in Sql Server: Security And Login  And Right Click on Login Name And Select Peroperties And Select Server Roles And 
  Checked The Sysadmin And Bulkadmin then Ok.
9-firewall: Open cmd as administrator and type: 
      netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT

0

এই গত সপ্তাহে আমি মাইক্রোসফ্ট এসকিউএল সার্ভার 2014 বিকাশকারী সংস্করণটি আমার ডেভ বাক্সে ইনস্টল করেছি এবং সাথে সাথে এমন একটি সমস্যায় পড়ে গেল যা আমি আগে কখনও দেখিনি।

আমি অসংখ্যবার এসকিউএল সার্ভারের বিভিন্ন সংস্করণ ইনস্টল করেছি এবং এটি সাধারণত ব্যথাহীন পদ্ধতি। সার্ভারটি ইনস্টল করুন, পরিচালনা কনসোল চালান, এটি এত সহজ it's তবে, এই ইনস্টলেশনটি শেষ করার পরে, যখন আমি এসএসএমএস ব্যবহার করে সার্ভারে লগ ইন করার চেষ্টা করেছি, তখন আমি নীচের মত একটি ত্রুটি পেয়েছি:

এসকিউএল সার্ভার লগইন ত্রুটি 18456 "ব্যবহারকারীর জন্য লগইন ব্যর্থ হয়েছে ... (মাইক্রোসফ্ট এসকিউএল সার্ভার, ত্রুটি: 18456)" লগ ইন করার সময় আমি যদি ভুল পাসওয়ার্ড টাইপ করি তবে আমি এই ত্রুটিটি দেখতে অভ্যস্ত - তবে কেবলমাত্র আমি মিশ্র মোড ব্যবহার করলেই ( উইন্ডোজ এবং এসকিউএল প্রমাণীকরণ)। এই ক্ষেত্রে, সার্ভারটি কেবল উইন্ডোজ প্রমাণীকরণের সাথে সেট আপ করা হয়েছিল এবং ব্যবহারকারীর অ্যাকাউন্টটি আমার নিজস্ব ছিল। আমি এখনও নিশ্চিত নই কেন এটি সেটআপ করার সময় এটি আমার ব্যবহারকারীকে SYSADMIN ভূমিকাতে যুক্ত করেছিল না; সম্ভবত আমি একটি পদক্ষেপ মিস করেছি এবং এটি যুক্ত করতে ভুলে গেছি। যে কোনও হারে, সমস্ত আশা হারিয়ে যায়নি।

এটি ঠিক করার উপায়, যদি আপনি এসকিউএল সার্ভারে অন্য কোনও অ্যাকাউন্টে লগ ইন করতে না পারেন তবে হ'ল একটি কমান্ড লাইন ইন্টারফেসের মাধ্যমে আপনার নেটওয়ার্ক লগইন যুক্ত করুন। এটি কাজ করার জন্য, আপনি যে পিসিতে লগ ইন করেছেন তার জন্য আপনাকে উইন্ডোজের প্রশাসক হওয়া দরকার।

এমএসএসকিউএল পরিষেবা বন্ধ করুন। প্রশাসক হিসাবে রান ব্যবহার করে একটি কমান্ড প্রম্পট খুলুন। এসকিউএল সার্ভার EXE ফাইল ধারণ করে এমন ফোল্ডারে পরিবর্তন করুন; এসকিউএল সার্ভার ২০১৪-এর জন্য ডিফল্ট হ'ল "সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট এসকিউএল সার্ভার \ এমএসএসকিউএল 12. এমএসএসকিউএলএসভার। এমএসএসকিউএল \ বিন"। নিম্নলিখিত কমান্ডটি চালান: "sqlservr.exe –m"। এটি একক ব্যবহারকারী মোডে এসকিউএল সার্ভার শুরু করবে। এই কমান্ড প্রম্পটটি খোলা রেখে, দ্বিতীয় এবং দ্বিতীয় ধাপটি পুনরাবৃত্তি করে দ্বিতীয়টি খুলুন the

লগইন তৈরি করুন [ডোমেইননাম \ লগইননাম] উইন্ডোজ 2 জি 3 এসপি_এডিডিএসআরও্রোলেমেমবার 'লগিন_NAME', 'সাইজাদমিন' 4 যান কমান্ড প্রম্পট উইন্ডোতে উভয় প্রক্রিয়া শেষ করতে সিটিআরএল + সি ব্যবহার করুন; এসকিউএল সার্ভার প্রক্রিয়া শেষ করতে আপনাকে Y চাপতে অনুরোধ জানানো হবে।

এমএসএসকিউএল পরিষেবাটি পুনরায় চালু করুন। এটাই! আপনার এখন আপনার নেটওয়ার্ক লগইন ব্যবহার করে লগ ইন করতে সক্ষম হওয়া উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.