CREATE LOGIN [test] WITH PASSWORD=N'test', DEFAULT_DATABASE=[db_test], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
EXEC master..sp_addsrvrolemember @loginame = N'test', @rolename = N'sysadmin' -- или что тебе надо
GO
USE [db_test]
GO
CREATE USER [test] FOR LOGIN [test]
GO
Новый пользователь в Microsoft SQL
Возможно ли с помошью ADO добавить нового пользователя в SQL Server
и прописать его права доступа?
...и подскажите в какую сторону копать :-)
Заранее благодарю.
Если данный объект не понимает иных команд, кроме стандартных SQL, то можно прописать в БД макрос (функцию) "Добавить_Пользователя" с требуемыми параметрами. Хранимые процедуры данный компонент вызывает без проблем. Параметры процедуры прописываются в свойстве Parameters
Цитата: Tramp
Я программирую на C++ Builder 6.0. Ответе, пожалуйста на вопрос:
Возможно ли с помошью ADO добавить нового пользователя в SQL Server
и прописать его права доступа?
...и подскажите в какую сторону копать :-)
Заранее благодарю.
Возможно ли с помошью ADO добавить нового пользователя в SQL Server
и прописать его права доступа?
...и подскажите в какую сторону копать :-)
Заранее благодарю.
Насколько я помню, в MSSQL Server, информация о базе данных хранится в ней самой в специальных таблицах.. Список юзеров тоже определен там же.. попробуй стандартной тулзой посмотри имена системных таблиц.. С ними можна будет работать обычным запросом.
Код:
Как вариант просто через exec.
Советую поставить SQL Server Management Studio Express, качается бесплатно с сайта МС. Он позволяет в удобном виде конфигурировать сервер, и при этом изменения просматривать в виде SQL
Код:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("USE master");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_grantlogin \'Domen\\" + Login + "\'");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_defaultdb \'Domen\\" + Login + "\', \'DataName\'");
Query1->SQL->Add("GO");
Query1->SQL->Add("USE DataName");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_grantdbaccess \'Domen\\" + Login + "\', \'" + Login + "\'");
Query1->SQL->Add("GO");
try
{
//как выполнить этот запрос
}
catch(...)
{
ShowMessage("Error");
}
Query1->SQL->Clear();
Query1->SQL->Add("USE master");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_grantlogin \'Domen\\" + Login + "\'");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_defaultdb \'Domen\\" + Login + "\', \'DataName\'");
Query1->SQL->Add("GO");
Query1->SQL->Add("USE DataName");
Query1->SQL->Add("GO");
Query1->SQL->Add("sp_grantdbaccess \'Domen\\" + Login + "\', \'" + Login + "\'");
Query1->SQL->Add("GO");
try
{
//как выполнить этот запрос
}
catch(...)
{
ShowMessage("Error");
}
как выполнить этот запрос?
ни
Query1->Open();
ни
Query1->ExecSQL();
не прокатывают :(
Код:
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("USE master");
Query->SQL->Add("EXEC sp_grantlogin \'" + Domen->Text + "\\" +Names->Strings + "\'");
Query->SQL->Add("EXEC sp_defaultdb \'" + Domen->Text + "\\" + Names->Strings + "\', \'" + BaseName->Text + "\'");
Query->SQL->Add("USE DataStarter");
Query->SQL->Add("EXEC sp_grantdbaccess \'" + Domen->Text + "\\" + Names->Strings + "\', \'" + Names->Strings + "\'");
try
{
Query->ExecSQL();
}
catch(...)
{
ShowMessage("So fucking what?");
break;
}
Query->SQL->Clear();
Query->SQL->Add("USE master");
Query->SQL->Add("EXEC sp_grantlogin \'" + Domen->Text + "\\" +Names->Strings + "\'");
Query->SQL->Add("EXEC sp_defaultdb \'" + Domen->Text + "\\" + Names->Strings + "\', \'" + BaseName->Text + "\'");
Query->SQL->Add("USE DataStarter");
Query->SQL->Add("EXEC sp_grantdbaccess \'" + Domen->Text + "\\" + Names->Strings + "\', \'" + Names->Strings + "\'");
try
{
Query->ExecSQL();
}
catch(...)
{
ShowMessage("So fucking what?");
break;
}
Вот так всё работает.
Ни кто не знает как решить тривиальную задачу, а именно: выполнить проверку существования уже зарегистрированного пользователя?