Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обойти UD Транзакцию / 7 сообщений из 7, страница 1 из 1
28.11.2002, 10:12:23
    #32073249
moonmike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
Ряд системных процедур Сервера не работает из пользовательских транзакций, каким образом можно заставить их работать???
...
Рейтинг: 0 / 0
28.11.2002, 11:29:26
    #32073293
moonmike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
Есть прога на C++Builder. При добавлении, из проги же, нового Менеджера вызываю ХП(в которую передаю необходимые параметры). Хп должна сделать следующее:
1)Завести нового SQL юзера
2)Предоставить ему доступ к серверу
3)Доступ к БД
4)Если нет Роли сопоставленной отделу то создать эту роль.
5)Включить в роль, соответствующую отделу.
Реализовывал это все в следующей ХП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE PROCEDURE dbo.AddManager @Podr_naim varchar ( 100 ), @Login varchar ( 100 ),
@Name varchar ( 50 ), @Famili varchar ( 50 ), @Last_Name varchar ( 50 ), @IsBoss bit, @Pass varchar ( 50 ),
@Position varchar ( 150 ) AS
EXEC sp_addlogin @Login, @Pass, 'MyDataBase'
EXEC sp_grantdbaccess @Login, @Login
DECLARE @SID varbinary ( 85 )
SELECT @SID =  sid FROM master.dbo.syslogins where name = @Login
DECLARE @Podr_id bigint
SELECT @Podr_id = podr_id FROM Otdel where naimen = @Podr_naim
INSERT Managers (SID, Podr_id, Login_name, [Name], Famili, Last_name, IsBoss, [Position])
VALUES (@SID, @Podr_id, @Login, @Name, @Famili, @Last_Name, @IsBoss, @Position)
DECLARE @RoleName varchar( 100 )
SELECT @RoleName = Role_Name FROM OtdelToRole WHERE Otdel_id = @Podr_id
IF NOT EXISTS(SELECT name FROM sysusers where issqlrole =  1  and name = @RoleName)
	BEGIN
	INSERT OtdelToRole (Otdel_id,Role_Name) VALUES (@Podr_id,@Podr_naim)
	EXECUTE sp_addrole @Podr_naim
	END
EXECUTE sp_addrolemember @RoleName, @Login
DECLARE @SQLString nvarchar( 512 )
SET @SQLString = 'GRANT EXECUTE ON ReturnMenu TO ' + @Login  
EXECUTE sp_executesql @SQLString
GO

/-------
Так вот. При вызове данной ХП из QA все работает отлично. А вот при вызове из проги пользователь на добавляется в роль.
В BOL написано что:
Код: plaintext
sp_addrolemember
cannot be used inside a user-defined transaction.
А как ее всетаки заставить работать???
...
Рейтинг: 0 / 0
28.11.2002, 11:36:52
    #32073300
VAT
VAT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
Не начинать транзакцию в проге?
...
Рейтинг: 0 / 0
28.11.2002, 12:20:41
    #32073325
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
А ты подумай, как ты откатывать ее сможешь?
...
Рейтинг: 0 / 0
28.11.2002, 12:37:43
    #32073336
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
А он, скорее всего, и не начинает - есть шанс, что это делает Builder!
А вы случайм CachedUpdates не пользуете?
...
Рейтинг: 0 / 0
28.11.2002, 13:36:10
    #32073365
moonmike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
Чего то я не нашел у TADOStoredProc свойства CashedUpdate=(((привожу свойства TADOStoredProc в дизигнере:
AutoCalcFields = true;
CasheSize = 1;
CursorLocation = clUseClient;
CursorType = ctKeyset;
ExecuteOption:
eoAsyncExecute = false,
eoAsyncFatch = false,
eoAsyncFetchNonBlocking = false,
eoExecuteNoRecords = false;
Filtered = false;
LockType = ltOptimistic;
MarshalOptions = moMarshallAll;
...
Рейтинг: 0 / 0
28.11.2002, 13:44:02
    #32073371
moonmike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обойти UD Транзакцию
Надо было курсор на серверный поменять.
Все спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обойти UD Транзакцию / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]