Saya ingin menulis skrip untuk membuat admin
pengguna (dengan abcd
sandi) di SQL Server Express. Saya juga ingin memberikan admin
hak penuh kepada pengguna ini .
sumber
Saya ingin menulis skrip untuk membuat admin
pengguna (dengan abcd
sandi) di SQL Server Express. Saya juga ingin memberikan admin
hak penuh kepada pengguna ini .
Berdasarkan pertanyaan Anda, saya rasa Anda mungkin sedikit bingung tentang perbedaan antara Pengguna dan Login . A Login adalah akun di SQL Server secara keseluruhan - seseorang yang dapat masuk ke server dan memiliki kata sandi. Sebuah Pengguna adalah Login dengan akses ke database tertentu.
Membuat Login itu mudah dan harus (jelas) dilakukan sebelum membuat akun Pengguna untuk login di database tertentu:
CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO
Berikut adalah cara Anda membuat Pengguna dengan hak istimewa db_owner menggunakan Login yang baru saja Anda nyatakan:
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
Sekarang, Login sedikit lebih lancar daripada yang saya buat di atas. Misalnya, akun Login secara otomatis dibuat (di sebagian besar penginstalan SQL Server) untuk akun Administrator Windows saat database diinstal. Dalam kebanyakan situasi, saya hanya menggunakannya ketika saya mengelola database (ia memiliki semua hak istimewa).
Namun, jika Anda akan mengakses SQL Server dari aplikasi, maka Anda perlu mengatur server untuk "Mode Campuran" (baik login Windows maupun SQL) dan membuat Login seperti yang ditunjukkan di atas. Anda kemudian akan mendapatkan hak istimewa "MEMBERIKAN" ke Login SQL tersebut berdasarkan apa yang diperlukan untuk aplikasi Anda. Lihat di sini untuk informasi lebih lanjut.
UPDATE: Aaron menunjukkan penggunaan sp_addsrvrolemember untuk menetapkan peran yang disiapkan ke akun login Anda. Ini ide yang bagus - lebih cepat dan lebih mudah daripada memberikan hak istimewa secara manual. Jika Anda mencari di Google, Anda akan melihat banyak tautan. Namun, Anda tetap harus memahami perbedaan antara login dan pengguna.
Hak admin penuh untuk seluruh server, atau database tertentu? Saya pikir yang lain menjawab untuk database, tetapi untuk server:
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';
Anda mungkin perlu meninggalkan parameter CHECK_ tergantung pada versi SQL Server Express yang Anda gunakan (hampir selalu berguna untuk menyertakan informasi ini dalam pertanyaan Anda).
sumber
Jika Anda ingin membuat skrip generik, Anda dapat melakukannya dengan pernyataan Execute dengan Replace with your username and database name
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)
sumber
Kamu bisa memakai:
CREATE LOGIN <login name> WITH PASSWORD = '<password>' ; GO
Untuk membuat login (Lihat di sini untuk lebih jelasnya).
Maka Anda mungkin perlu menggunakan:
CREATE USER user_name
Untuk membuat pengguna yang terkait dengan login untuk database tertentu, Anda juga ingin memberi mereka akses.
(Lihat di sini untuk detailnya)
Anda juga bisa menggunakan:
GRANT permission [ ,...n ] ON SCHEMA :: schema_name
Untuk menyiapkan izin untuk skema yang Anda tetapkan pengguna.
(Lihat di sini untuk detailnya)
Dua perintah lain yang mungkin berguna bagi Anda adalah ALTER USER dan ALTER LOGIN .
sumber
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
ini sepenuhnya membantu Anda untuk jaringan menggunakan:
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
sumber
Minggu terakhir ini saya menginstal Microsoft SQL Server 2014 Developer Edition di kotak dev saya, dan langsung mengalami masalah yang belum pernah saya lihat sebelumnya.
Saya telah menginstal berbagai versi SQL Server berkali-kali, dan ini biasanya merupakan prosedur yang tidak menyakitkan. Instal server, jalankan Konsol Manajemen, sesederhana itu. Namun, setelah menyelesaikan instalasi ini, ketika saya mencoba masuk ke server menggunakan SSMS, saya mendapat kesalahan seperti di bawah ini:
Kesalahan login SQL Server 18456 "Login gagal untuk pengguna ... (Microsoft SQL Server, Error: 18456)" Saya terbiasa melihat kesalahan ini jika saya mengetik kata sandi yang salah saat masuk - tapi itu hanya jika saya menggunakan mode campuran ( Otentikasi Windows dan SQL). Dalam kasus ini, server diatur hanya dengan Otentikasi Windows, dan akun pengguna adalah milik saya. Saya masih tidak yakin mengapa ia tidak menambahkan pengguna saya ke peran SYSADMIN selama penyiapan; mungkin saya melewatkan satu langkah dan lupa menambahkannya. Bagaimanapun, tidak semua harapan hilang.
Cara untuk memperbaikinya, jika Anda tidak dapat masuk dengan akun lain ke SQL Server, adalah dengan menambahkan login jaringan Anda melalui antarmuka baris perintah. Agar ini berfungsi, Anda harus menjadi Administrator di Windows untuk PC yang Anda masuki.
Hentikan layanan MSSQL. Buka Command Prompt menggunakan Run As Administrator. Ubah ke folder yang menyimpan file EXE SQL Server; default untuk SQL Server 2014 adalah "C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Binn". Jalankan perintah berikut: “sqlservr.exe –m”. Ini akan memulai SQL Server dalam mode pengguna tunggal. Sambil membiarkan Command Prompt ini terbuka, buka yang lain, ulangi langkah 2 dan 3. Di jendela Command Prompt kedua, jalankan "SQLCMD –S Server_Name \ Instance_Name" Di jendela ini, jalankan baris berikut, tekan Enter setelah masing-masing: 1
Mulai ulang layanan MSSQL. Itu dia! Sekarang Anda seharusnya dapat masuk menggunakan login jaringan Anda.
sumber