| 1 | IF DB_ID('netdata') IS NULL |
| 2 | BEGIN |
| 3 | CREATE DATABASE netdata; |
| 4 | END |
| 5 | GO |
| 6 | |
| 7 | ALTER DATABASE netdata SET QUERY_STORE = ON; |
| 8 | GO |
| 9 | |
| 10 | IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = 'netdata_limited') |
| 11 | BEGIN |
| 12 | CREATE LOGIN netdata_limited WITH PASSWORD = 'Netdata123!'; |
| 13 | END |
| 14 | GO |
| 15 | |
| 16 | -- Ensure the limited user can start the collector in E2E: |
| 17 | -- A previous DENY will override GRANT, so revoke first. |
| 18 | REVOKE VIEW SERVER STATE FROM netdata_limited; |
| 19 | GO |
| 20 | |
| 21 | GRANT VIEW SERVER STATE TO netdata_limited; |
| 22 | GO |
| 23 | |
| 24 | USE msdb; |
| 25 | GO |
| 26 | |
| 27 | IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = 'netdata_limited') |
| 28 | BEGIN |
| 29 | CREATE USER netdata_limited FOR LOGIN netdata_limited; |
| 30 | END |
| 31 | GO |
| 32 | |
| 33 | GRANT SELECT ON dbo.sysjobs TO netdata_limited; |
| 34 | GO |
| 35 | |
| 36 | USE netdata; |
| 37 | GO |
| 38 | |
| 39 | IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = 'netdata_limited') |
| 40 | BEGIN |
| 41 | CREATE USER netdata_limited FOR LOGIN netdata_limited; |
| 42 | END |
| 43 | GO |
| 44 | |
| 45 | GRANT CONNECT TO netdata_limited; |
| 46 | GO |
| 47 | |
| 48 | IF OBJECT_ID('dbo.sample', 'U') IS NULL |
| 49 | BEGIN |
| 50 | CREATE TABLE dbo.sample ( |
| 51 | id INT IDENTITY(1,1) PRIMARY KEY, |
| 52 | name NVARCHAR(64) NOT NULL, |
| 53 | value INT NOT NULL |
| 54 | ); |
| 55 | END |
| 56 | GO |
| 57 | |
| 58 | IF OBJECT_ID('dbo.deadlock_a', 'U') IS NULL |
| 59 | BEGIN |
| 60 | CREATE TABLE dbo.deadlock_a ( |
| 61 | id INT PRIMARY KEY, |
| 62 | value INT NOT NULL |
| 63 | ); |
| 64 | END |
| 65 | GO |
| 66 | |
| 67 | IF OBJECT_ID('dbo.deadlock_b', 'U') IS NULL |
| 68 | BEGIN |
| 69 | CREATE TABLE dbo.deadlock_b ( |
| 70 | id INT PRIMARY KEY, |
| 71 | value INT NOT NULL |
| 72 | ); |
| 73 | END |
| 74 | GO |
| 75 | |
| 76 | IF NOT EXISTS (SELECT 1 FROM dbo.deadlock_a WHERE id = 1) |
| 77 | BEGIN |
| 78 | INSERT INTO dbo.deadlock_a (id, value) VALUES (1, 10); |
| 79 | END |
| 80 | GO |
| 81 | |
| 82 | IF NOT EXISTS (SELECT 1 FROM dbo.deadlock_b WHERE id = 1) |
| 83 | BEGIN |
| 84 | INSERT INTO dbo.deadlock_b (id, value) VALUES (1, 20); |
| 85 | END |
| 86 | GO |
| 87 | |
| 88 | -- Table for error category testing (constraint violations, data type errors). |
| 89 | IF OBJECT_ID('dbo.error_test', 'U') IS NULL |
| 90 | BEGIN |
| 91 | CREATE TABLE dbo.error_test ( |
| 92 | id INT PRIMARY KEY, |
| 93 | unique_col NVARCHAR(64) NOT NULL UNIQUE, |
| 94 | int_col INT NOT NULL |
| 95 | ); |
| 96 | END |
| 97 | GO |
| 98 | |
| 99 | IF NOT EXISTS (SELECT 1 FROM dbo.error_test WHERE id = 1) |
| 100 | BEGIN |
| 101 | INSERT INTO dbo.error_test (id, unique_col, int_col) VALUES (1, 'existing_value', 100); |
| 102 | END |
| 103 | GO |
| 104 | |
| 105 | INSERT INTO dbo.sample (name, value) |
| 106 | VALUES ('alpha', 10), ('beta', 20), ('gamma', 30); |
| 107 | GO |
| 108 | |
| 109 | SELECT COUNT(*) FROM dbo.sample; |
| 110 | SELECT * FROM dbo.sample WHERE value > 15; |
| 111 | UPDATE dbo.sample SET value = value + 1 WHERE name = 'alpha'; |
| 112 | GO |