Есть ли способ использовать SMO для пользователя, у которого нет доступа к master
?
Я пишу DLL библиотеки базы данных SQL Azure через SMO. Я использовал отдельного пользователя с ролью db_owner для доступа к БД и DDL, но он выдает исключение. SMO, как только я создаю ServerConnection, попытается установить значение по умолчанию master
, от которого у этого пользователя нет разрешения.
Я использовал последнюю версию SMO, выпущенную для nuget и кода в .NET Core 3.0.
--exec in master db
CREATE LOGIN testuser WITH PASSWORD='...';
--exec in user db: testsqldb
CREATE USER testuser FROM LOGIN testuser
ALTER ROLE db_owner ADD MEMBER testuser
Строка подключения имеет InitialCatalog = testsqldb
var connectionStringBuilder = new SqlConnectionStringBuilder(sourceConnectionString);
var serverConnection = CreateServerConnection(_connectionString);
//this throws exception
var server = new Server(serverConnection);
Сведения об исключении
{"The server principal \"testuser\" is not able to access the database \"master\" under the current security context.\r\nCannot open user default database. Login failed.\r\nLogin failed for user 'testuser'."}
Я ожидаю, что ServerConnection будет соблюдать InitialCatalog, указанный в ConnectionString, а непо умолчанию «мастер»