![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление прав пользователю [MSSQL]
panov © (2004-09-21 22:52:00)Создаю БД с единственным пользователем приверно так:
CREATE DATABASE [wgdb] ON ...
USE [wgdb]
EXEC sp_droprole N'db_wg'
EXEC sp_addlogin 'wg', null, 'wgdb'
EXEC sp_adduser 'wg', 'wg'
EXEC sp_defaultdb 'wg','wgdb'
EXEC sp_addrolemember 'db_wg','wg'
EXEC sp_addrolemember 'db_owner','wg'
GRANT ALL TO [db_wg]
SETUSER 'wg'
...
Далее идут создания таблиц и индексов.
Таблицы создаются, индексы нет.
Как мне назначит полные права пользователю wg?
panov (2004-09-22 13:11:00) [1]>Nikolay M. © (22.09.04 11:13) [8]
Спасибо-)
То, что ошибка, это точно...
Не зря есть поговорка - утро вечера мудренее.-))
Nikolay M. (2004-09-22 11:13:00) [2]
> У меня GO было везде, кроме операторов создания индексов.
А я что говорил?
> Syntax error or access violation
> похоже, что ошибка в процедуре
Похоже, похоже...
panov (2004-09-22 10:58:00) [3]Прошу прощения, похоже, что ошибка в процедуре, а не в правах доступа...
panov (2004-09-22 10:30:00) [4]>Anatoly Podgoretsky © (22.09.04 10:08) [5]
На всякий случай поставь в скрипте после каждой строки команду GO
Получилось. У меня GO было везде, кроме операторов создания индексов. Индексы теперь создаются, осталась проблема с последним оператором - создание хранимой процедуры.
Здесь создание базы, таблиц...
...
Далее создание процедуры
CREATE UNIQUE INDEX [IX_QuerysQueryDesc] ON [wgQuerys]([QueryDesc]) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [IX_ServiceServiceName] ON [wgServices]([ServiceName]) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [IX_Users] ON [wgUsers]([idUser]) ON [PRIMARY]
GO
CREATE INDEX [IX_Users_1] ON [wgUsers]([idUser]) ON [PRIMARY]
GO
CREATE PROCEDURE [wgInsRecTmp]
@IdSess numeric(18,0),
@IdDate int,
@HHNNSS char(6),
@IP varchar(50),
@idUser int,
@idQuery int,
@idService int,
@SentTo int,
@RecFrom int,
@SentFor int,
@RecFor int,
@Sec int,
@Protocol varchar(10),
@Addr varchar(120),
@Content varchar(1024),
@DateStr char(10)
AS
----------------------
SELECT Count(idDate) AS CountDate FROM wg.wgDates
WHERE Convert(char(10),dateRec,103)=@DateStr
IF CountDate=0 THEN
{
INSERT INTO wg.wgDates (DateRec) VALUES (DateStr)
}
SELECT idDate as DateId FROM wg.wgDates
WHERE Convert(char(10),dateRec,103)=@DateStr
INSERT INTO tmpWGLogs
(
idSess,idDate,HHNNSS,Ip,idUser,IdQuery,idService,
SentTo,RecFrom,SentFor,RecFor,Sec,Protocol,Addr,Content
)
VALUES
(
@IdSess,
@DateId,
@HHNNSS,
@IP,
@idUser,
@idQuery,
@idService,
@SentTo,
@RecFrom,
@SentFor,
@RecFor,
@Sec,
@Protocol,
@Addr,
@Content
)
GO
Протокол:
Deleting database file 'e:\MSSQL\data\wgdb_Log.LDF'.
Deleting database file 'e:\mssql\data\wgdb_Data.MDF'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'wgdb_Data'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'wgdb_Log'.
New role added.
Login dropped.
New login created.
Granted database access to 'wg'.
Default database changed.
'wg' added to role 'db_wg'.
'wg' added to role 'db_owner'.
'wg' added to role 'db_datawriter'.
'wg' added to role 'db_datareader'.
[Microsoft][ODBC SQL Server Driver]Syntax error or access violation
Anatoly Podgoretsky (2004-09-22 10:08:00) [5]На всякий случай поставь в скрипте после каждой строки команду GO
panov (2004-09-22 10:06:00) [6]>KSergey © (22.09.04 08:07) [1]
Может это все надо не одним сплошным запросом выполнять?
Сейчас отлаживаю создание базы в isqlw, выполняется скрипт на создание сплошным потоком.
Каждый оператор в скрипте выполняется отдельно, последовательно.
Nikolay M. (2004-09-22 10:04:00) [7]Попробуй в разных батчах выполнить. GO в этом поможет. Был тоже как-то косяк с созданием индекса и его использованием в одном батче.
Anatoly Podgoretsky (2004-09-22 09:06:00) [8]А отсюда не видно одним это запросом или разным. Сэр Панов молчит как он выполняет это, подозреваю, что через osql
KSergey (2004-09-22 08:07:00) [9]Может это все надо не одним сплошным запросом выполнять?