Hi.
I have two sql servers and have ran exec sp_addlinkedserver 'ACSPSM', N'SQL
Server' to link one to the other and also vise versa.
Each server has two users permissioned.
My problem is when ever I try to do something that does a remote write I get
the follow error message
Microsoft OLE DB Provider for SQL Server error '80040e14'
[OLE/DB provider returned message: Cannot start more transactions on this
session.]
Also
when I try and manually run a stored procedure, I get:
Remote tables are not updatable. Updatable keyset-driven cursors on remote
tables require a transaction with the REPEATABLE_READ or SERIALIZABLE
isolation level spanning the cursor.
(1 row(s) affected)
(1 row(s) affected)
(50 row(s) affected)
Server: Msg 7395, Level 16, State 2, Procedure ams_Move_Stock_To_PSM, Line
65
Unable to start a nested transaction for OLE DB provider 'SQLOLEDB'. A
nested transaction was required because the XACT_ABORT option was set to
OFF.
[OLE/DB provider returned message: Cannot start more transactions on this
session.]
Can anyone suggest how I resolve this.
FYI
Database Creation Script: (both database are the same scripts but db names
are changed)
CREATE DATABASE [msmprim] ON (NAME = N'msmprim_Data', FILENAME =
N'D:\ACS_DB\data\msmprim_Data.MDF' , SIZE = 2000, FILEGROWTH = 10%) LOG ON
(NAME = N'msmprim_Log', FILENAME = N'D:\ACS_DB\logs\msmprim_Log.LDF' , SIZE
= 2000, FILEGROWTH = 10%)
COLLATE Latin1_General_CI_AS
GO
exec sp_dboption N'msmprim', N'autoclose', N'false'
GO
exec sp_dboption N'msmprim', N'bulkcopy', N'false'
GO
exec sp_dboption N'msmprim', N'trunc. log', N'false'
GO
exec sp_dboption N'msmprim', N'torn page detection', N'true'
GO
exec sp_dboption N'msmprim', N'read only', N'false'
GO
exec sp_dboption N'msmprim', N'dbo use', N'false'
GO
exec sp_dboption N'msmprim', N'single', N'false'
GO
exec sp_dboption N'msmprim', N'autoshrink', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI null default', N'false'
GO
exec sp_dboption N'msmprim', N'recursive triggers', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI nulls', N'false'
GO
exec sp_dboption N'msmprim', N'concat null yields null', N'false'
GO
exec sp_dboption N'msmprim', N'cursor close on commit', N'false'
GO
exec sp_dboption N'msmprim', N'default to local cursor', N'false'
GO
exec sp_dboption N'msmprim', N'quoted identifier', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI warnings', N'false'
GO
exec sp_dboption N'msmprim', N'auto create statistics', N'true'
GO
exec sp_dboption N'msmprim', N'auto update statistics', N'true'
GO
User Creation Script:
/****** Object: Login MSM Script Date: 31/10/2002 10:41:26 ******/
use [msmprim]
GO
declare @sqlLoginName nvarchar(32) select @sqlLoginName = N'msm'
declare @UserPassword nvarchar(32) select @UserPassword = N'wibble'
declare @logindb nvarchar(132) select @logindb = N'msmprim'
declare @loginlang nvarchar(132) select @loginlang = N'British English'
if not exists (select * from master.dbo.syslogins where loginname =
@sqlLoginName)
BEGIN
if @logindb is null or not exists (select * from master.dbo.sysdatabases
where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master.dbo.syslanguages
where name = @loginlang) and @loginlang <> N'British English')
select @loginlang = @@language
exec sp_addlogin @sqlLoginName, @UserPassword, @logindb, @loginlang
END
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
if not exists (select * from dbo.sysusers where name = @sqlLoginName and uid
< 16382)
EXEC sp_grantdbaccess @sqlLoginName, @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datareader', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datawriter', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_owner', @sqlLoginName
GO
use [msmprim]
GO
declare @sqlLoginName nvarchar(32) select @sqlLoginName = N'psm'
declare @UserPassword nvarchar(32) select @UserPassword = N'wibble'
declare @logindb nvarchar(132) select @logindb = N'msmprim'
declare @loginlang nvarchar(132) select @loginlang = N'British English'
if not exists (select * from master.dbo.syslogins where loginname =
@sqlLoginName)
BEGIN
if @logindb is null or not exists (select * from master.dbo.sysdatabases
where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master.dbo.syslanguages
where name = @loginlang) and @loginlang <> N'British English')
select @loginlang = @@language
exec sp_addlogin @sqlLoginName, @UserPassword, @logindb, @loginlang
END
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
if not exists (select * from dbo.sysusers where name = @sqlLoginName and uid
< 16382)
EXEC sp_grantdbaccess @sqlLoginName, @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datareader', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datawriter', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_owner', @sqlLoginName
GO 1 11758
I have got a little further, by adding 'SET XACT_ABORT ON' I have mangaged
to get the remote write to work.
Can someone tell me what the implication of setting 'SET XACT_ABORT ON' is
and what effect will it have on my SPs. Will they still roll back as
before?
Sample SP
procedure [msm].ams_Insert_Audit
@strResult varchar(8) = 'Failure' output,
@strErrorDesc varchar(512) = 'SP Not Executed' output,
@strSCRIPT varchar(128),
@strLOGINID varchar(32),
@strVFEID varchar(16),
@strBILLORGID varchar(16),
@strRETAILERID varchar(16),
@strLOCATIONID varchar(16),
@strPOSTID varchar(16),
@strXACTIONID varchar(16),
@strCODE varchar(64),
@strDATA varchar(1024)
as
declare @strStep varchar(32)
declare @trancount int
set @trancount = @@trancount
set @strStep = 'Start of Stored Proc'
if (@trancount = 0)
begin tran ams_Insert_Audit
else
save tran ams_Insert_Audit
SET XACT_ABORT ON
set @strStep = 'Writing MSM Audit'
insert into
HAN.msmprim.msm.AMSAUDIT (TIMESTAMP, SCRIPT, LOGINID, VFEID, BILLORGID,
RETAILERID, LOCATIONID, POSTID, XACTIONID, CODE, DATA)
values
(GetDate(), @strSCRIPT, @strLOGINID, @strVFEID, @strBILLORGID,
@strRETAILERID, @strLOCATIONID, @strPOSTID, @strXACTIONID, @strCODE,
@strDATA)
set @strStep = 'Writing PSM Audit'
insert into
ACSPSM.psmprim.psm.AMSAUDIT (TIMESTAMP, SCRIPT, LOGINID, VFEID, BILLORGID,
RETAILERID, LOCATIONID, POSTID, XACTIONID, CODE, DATA)
values
(GetDate(), @strSCRIPT, @strLOGINID, @strVFEID, @strBILLORGID,
@strRETAILERID, @strLOCATIONID, @strPOSTID, @strXACTIONID, @strCODE,
@strDATA)
if (@@error <> 0)
begin
rollback tran ams_Insert_Audit
set @strResult = 'Failure'
set @strErrorDesc = 'Fail @ Step :' + @strStep + ' Error : Error Occured'
return -1969
end
else
begin
set @strResult = 'Success'
set @strErrorDesc = ''
end
-- commit tran if we started it
if (@trancount = 0)
commit tran ams_Insert_Audit
return 0
Regards
Steve
"Steve Thorpe" <st***********@nospam.hotmail.com> wrote in message
news:bk**********@titan.btinternet.com... Hi.
I have two sql servers and have ran exec sp_addlinkedserver 'ACSPSM',
N'SQL Server' to link one to the other and also vise versa.
Each server has two users permissioned.
My problem is when ever I try to do something that does a remote write I
get the follow error message Microsoft OLE DB Provider for SQL Server error '80040e14'
[OLE/DB provider returned message: Cannot start more transactions on this session.]
Also
when I try and manually run a stored procedure, I get:
Remote tables are not updatable. Updatable keyset-driven cursors on remote tables require a transaction with the REPEATABLE_READ or SERIALIZABLE isolation level spanning the cursor.
(1 row(s) affected)
(1 row(s) affected)
(50 row(s) affected)
Server: Msg 7395, Level 16, State 2, Procedure ams_Move_Stock_To_PSM, Line 65 Unable to start a nested transaction for OLE DB provider 'SQLOLEDB'. A nested transaction was required because the XACT_ABORT option was set to OFF. [OLE/DB provider returned message: Cannot start more transactions on this session.]
Can anyone suggest how I resolve this.
FYI
Database Creation Script: (both database are the same scripts but db names are changed)
CREATE DATABASE [msmprim] ON (NAME = N'msmprim_Data', FILENAME = N'D:\ACS_DB\data\msmprim_Data.MDF' , SIZE = 2000, FILEGROWTH = 10%) LOG ON (NAME = N'msmprim_Log', FILENAME = N'D:\ACS_DB\logs\msmprim_Log.LDF' ,
SIZE = 2000, FILEGROWTH = 10%)
COLLATE Latin1_General_CI_AS
GO
exec sp_dboption N'msmprim', N'autoclose', N'false'
GO
exec sp_dboption N'msmprim', N'bulkcopy', N'false'
GO
exec sp_dboption N'msmprim', N'trunc. log', N'false'
GO
exec sp_dboption N'msmprim', N'torn page detection', N'true'
GO
exec sp_dboption N'msmprim', N'read only', N'false'
GO
exec sp_dboption N'msmprim', N'dbo use', N'false'
GO
exec sp_dboption N'msmprim', N'single', N'false'
GO
exec sp_dboption N'msmprim', N'autoshrink', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI null default', N'false'
GO
exec sp_dboption N'msmprim', N'recursive triggers', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI nulls', N'false'
GO
exec sp_dboption N'msmprim', N'concat null yields null', N'false'
GO
exec sp_dboption N'msmprim', N'cursor close on commit', N'false'
GO
exec sp_dboption N'msmprim', N'default to local cursor', N'false'
GO
exec sp_dboption N'msmprim', N'quoted identifier', N'false'
GO
exec sp_dboption N'msmprim', N'ANSI warnings', N'false'
GO
exec sp_dboption N'msmprim', N'auto create statistics', N'true'
GO
exec sp_dboption N'msmprim', N'auto update statistics', N'true'
GO
User Creation Script:
/****** Object: Login MSM Script Date: 31/10/2002 10:41:26 ******/
use [msmprim]
GO
declare @sqlLoginName nvarchar(32) select @sqlLoginName = N'msm'
declare @UserPassword nvarchar(32) select @UserPassword = N'wibble'
declare @logindb nvarchar(132) select @logindb = N'msmprim'
declare @loginlang nvarchar(132) select @loginlang = N'British English' if not exists (select * from master.dbo.syslogins where loginname = @sqlLoginName)
BEGIN
if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from
master.dbo.syslanguages where name = @loginlang) and @loginlang <> N'British English')
select @loginlang = @@language
exec sp_addlogin @sqlLoginName, @UserPassword, @logindb, @loginlang
END
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
if not exists (select * from dbo.sysusers where name = @sqlLoginName and
uid < 16382)
EXEC sp_grantdbaccess @sqlLoginName, @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datareader', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datawriter', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_owner', @sqlLoginName
GO
use [msmprim]
GO
declare @sqlLoginName nvarchar(32) select @sqlLoginName = N'psm'
declare @UserPassword nvarchar(32) select @UserPassword = N'wibble'
declare @logindb nvarchar(132) select @logindb = N'msmprim'
declare @loginlang nvarchar(132) select @loginlang = N'British English' if not exists (select * from master.dbo.syslogins where loginname = @sqlLoginName)
BEGIN
if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from
master.dbo.syslanguages where name = @loginlang) and @loginlang <> N'British English')
select @loginlang = @@language
exec sp_addlogin @sqlLoginName, @UserPassword, @logindb, @loginlang
END
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
if not exists (select * from dbo.sysusers where name = @sqlLoginName and
uid < 16382)
EXEC sp_grantdbaccess @sqlLoginName, @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datareader', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_datawriter', @sqlLoginName
/****** Object: User sm_web Script Date: 31/10/2002 10:41:26 ******/
exec sp_addrolemember N'db_owner', @sqlLoginName
GO
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: George Hernandez |
last post by:
I have a site on a set of Linux Servers where my site is PHP enabled and I
would like to prevent people from externally linking to content on my site
and replace it with a warning image.
I've...
|
by: Bren |
last post by:
I'm hoping somebody can help me with the following problem. I'm
hoping it's not insurmountable.
Here's a basic structure:
class EventTarget
{
public:
EventTarget();
virtual ~EventTarget();
|
by: m.ramana |
last post by:
Two SQL Servers
1) "Test"
Payroll DB
Transaction Table
pr_SubmitTransaction in Payroll DB
********************************************
2) "Production"
Payroll DB
Transaction Table...
|
by: Mitas Nikos |
last post by:
I am trying to use the library conio2 and though I have managed with a
few relatively simple examples when i try to compile a program which
conio's function clrscr is not in main() i get an error...
|
by: Lars |
last post by:
Hi,
I have problems building a simple handcoded C-extension (hello.c) with
Cygwin and gcc3.4.4. I hope somebody has encountered the same problem
before, and has some advice.
The extension...
|
by: buchalino |
last post by:
Hi Guys,
Please can someone help me, I am having a linking problem .
I am writing a socket program, the problem is just the linking .
I am using VC++ In the process of the problem, I...
|
by: Nitro |
last post by:
I'm having problems getting my DB to Link to different SQL servers. I got it to work fine on my own machine, but when distributed it at the client, and to another office, the Link didn't work. It...
|
by: misscrf |
last post by:
In a database, I am creating a new db. From there, I am setting up the
tables, so that I can eventually create a front end (usually access,
but I may attempt to be brave and lose the shell.) ...
|
by: =?utf-8?B?UMSBdmVscyBNaWhhaWxvdnM=?= |
last post by:
Hello,
I have a problem. I've linked MySql server to MsSql, in MySql I have a
table with Latvian data(character set is ucs2, ucs2_general_ci) and
the problem is that when I use openquery to read...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |