Pada sesi bloggging ini saya akan menulis step by step untuk create database dengan import .bak sehingga diberikan access login dan password tanpa harus mengetahui database yang ada pada table lain. Berikut ini adalah langkah - langkah settingnya :

STEP 1: Connect Pakai Windows Authentication

Di Azure Data Studio klik connection:
localhost, <default> (Integrated)

STEP 2: Hapus Semua yang Lama & Mulai Bersih

Buka New Query lalu jalankan:

USE master;
GO

-- Hapus user lama jika ada
IF EXISTS (SELECT name FROM sys.server_principals WHERE name = 'dp300admin')
BEGIN

DROP LOGIN dp300admin;

PRINT 'Login dp300admin dihapus!';

END
GO

-- Hapus database lama jika ada

IF EXISTS (SELECT name FROM sys.databases WHERE name = 'DP300')

BEGIN

ALTER DATABASE DP300 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

DROP DATABASE DP300;

PRINT 'Database DP300 dihapus!';

END

GO

-- Verifikasi semua sudah bersih

SELECT name FROM sys.databases WHERE name = 'DP300';
SELECT name FROM sys.server_principals WHERE name = 'dp300admin';
GO
-- Kedua query harus hasilnya 0 rows


STEP 3: Restore Database dari .BAK

USE master;
GO

RESTORE DATABASE DP300
FROM DISK = 'D:\FileDownload\AdventureWorks2022.bak'
WITH

MOVE 'AdventureWorks2022'

TO 'D:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\DP300.mdf',

MOVE 'AdventureWorks2022_log'

TO 'D:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\DP300_log.ldf',

REPLACE,

STATS = 10;

GO
Pada Step ini import database dilakukan pembagian 10% sampai 100%. Jika sudah sampai 100% Success maka akan otomatis Restore ke database.

STEP 4: Verifikasi Restore Berhasil

-- Cek status database

SELECT name, state_desc
FROM sys.databases
WHERE name = 'DP300';
GO

Pada Step Ini Database Harus dalam keadaan Online

STEP 5: Buat Login dp300admin

USE master;

GO

- Buat Login baru

CREATE LOGIN dp300admin
WITH PASSWORD = 'Admin@DP300!',
DEFAULT_DATABASE = DP300;
GO
-- Verifikasi login berhasil dibuat
SELECT name, default_database_name, is_disabled
FROM sys.server_principals
WHERE name = 'dp300admin';

GO

STEP 6: Buat User & Set Permission di DP300

USE DP300;
GO

-- Buat user dp300admin di database DP300
CREATE USER dp300admin FOR LOGIN dp300admin;
GO

-- Beri akses db_owner
ALTER ROLE db_owner ADD MEMBER dp300admin;
GO

-- Verifikasi user berhasil dibuat
SELECT name, type_desc
FROM sys.database_principals
WHERE name = 'dp300admin';

GO

STEP 7: Sembunyikan Database Lain dari dp300admin

USE master;
GO

-- Cabut permission lihat semua database

DENY VIEW ANY DATABASE TO dp300admin;
GO

-- Izinkan hanya lihat DP300

GRANT VIEW ANY DATABASE TO dp300admin;
GO

-- Verifikasi permission

SELECT

pr.name AS LoginName,

pe.state_desc AS State,

pe.permission_name AS Permission

FROM sys.server_permissions pe
JOIN sys.server_principals pr

ON pe.grantee_principal_id = pr.principal_id

WHERE pr.name = 'dp300admin';
GO

STEP 8: Test Login di Azure Data Studio atau SSMS 

Buat New Connection dengan settings :

  • Connection untuk SSMS

1773398374-image.png

  • Connection Azure Data Studio

1773398389-image.png