MSSQL Support

This commit is contained in:
2025-11-10 08:15:26 -05:00
parent 8ee146156b
commit c39ef28e90
6 changed files with 599 additions and 23 deletions

View File

@@ -0,0 +1,80 @@
-- MS SQL Server User Setup for Weather Connect
-- Run this as a user with appropriate privileges (e.g., sa or sysadmin role)
-- This creates a SQL Server login and database user
USE master;
GO
-- 1. Create SQL Server Login (if it doesn't exist)
IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'weather_user')
BEGIN
CREATE LOGIN weather_user WITH PASSWORD = 'Weather123!';
PRINT 'Login weather_user created successfully.';
END
ELSE
BEGIN
PRINT 'Login weather_user already exists.';
END
GO
-- 2. Switch to the WeatherDB database
USE WeatherDB;
GO
-- 3. Create database user for the login (if it doesn't exist)
IF NOT EXISTS (SELECT name FROM sys.database_principals WHERE name = 'weather_user')
BEGIN
CREATE USER weather_user FOR LOGIN weather_user;
PRINT 'User weather_user created successfully in WeatherDB.';
END
ELSE
BEGIN
PRINT 'User weather_user already exists in WeatherDB.';
END
GO
-- 4. Grant necessary permissions to the user
-- Grant db_datareader and db_datawriter roles
ALTER ROLE db_datareader ADD MEMBER weather_user;
ALTER ROLE db_datawriter ADD MEMBER weather_user;
GO
-- Grant DDL permissions to create tables and indexes
GRANT CREATE TABLE TO weather_user;
GRANT CREATE VIEW TO weather_user;
GRANT ALTER ON SCHEMA::dbo TO weather_user;
GO
-- 5. Verify user and permissions
SELECT
dp.name AS UserName,
dp.type_desc AS UserType,
sp.name AS LoginName
FROM sys.database_principals dp
LEFT JOIN sys.server_principals sp ON dp.sid = sp.sid
WHERE dp.name = 'weather_user';
GO
-- Display granted permissions
SELECT
USER_NAME(grantee_principal_id) AS UserName,
permission_name,
state_desc
FROM sys.database_permissions
WHERE USER_NAME(grantee_principal_id) = 'weather_user'
AND permission_name IN ('CREATE TABLE', 'CREATE VIEW', 'ALTER')
ORDER BY permission_name;
GO
-- Display role memberships
SELECT
USER_NAME(drm.member_principal_id) AS UserName,
USER_NAME(drm.role_principal_id) AS RoleName
FROM sys.database_role_members drm
WHERE USER_NAME(drm.member_principal_id) = 'weather_user';
GO
PRINT 'User weather_user is ready to use.';
PRINT 'Connection string example:';
PRINT 'Server=your_server;Database=WeatherDB;User Id=weather_user;Password=Weather123!;';
GO