我想从本地mssql 2005服务器向远程mssql 2005服务器插入触发器中的数据。
我有一个表Syr;我创建一个触发器(在插入后)来检测是否添加了什么。我想将这些数据复制到另一个远程服务器的同一个表中。我的问题是,如果我只在普通查询中执行insert语句(非常简单,只使用静态数据进行测试),它就成功了;我甚至可以从远程服务器中进行选择。但是当我将这个简单的插入插入到触发器块中时:“无法开始分布式事务”。
CREATE TRIGGER T_SyrInserted
ON [DBProba].[dbo].[Syr]
AFTER INSERT
AS BEGIN
INSERT INTO [Rem
我需要从MS SQL服务器通过ODBC向Oracle服务器提交一系列查询,并将结果作为表存储在MS SQL服务器上。
它必须是直通,因为查询需要在Oracle服务器上定义的服务器端函数。我不能将表保存在Oracle服务器上,然后通过ODBC访问它,因为Oracle上运行的数据库的供应商有许可限制。
下面是返回正确结果的代码,但我不知道如何保存它们:
DECLARE @BibID AS bigint
DECLARE BibList CURSOR FOR
SELECT BIB_ID FROM tblActiveSerialsThatHave740s
OPEN BibList
FET
我在本地数据库中的SQL表上有一个非常简单的触发器。触发器看起来像这样:
ALTER TRIGGER [dbo].[trg_UpdateAzureDB]
ON [dbo].[my_local_table]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trig
我使用的源代码如下:
Database db1 = new Database(); //init 1 db connection
db1.BeginTransaction();
//this function used to check exist customer
//in this function, I also use Database db2 = new Database(); db2.Close();
CheckExistCustomer();
InsertCustomer(db1, strInsert); //this function worked correct, use
我有一个要通过链接服务器执行的查询。该查询如下所示:
USE db1;
SET xact_abort ON;
DECLARE @statement NVARCHAR(max);
SET @statement = 'EXECUTE (''INSERT INTO T1(V1, V2) VALUES (1, 2)'') AT LS1';
BEGIN try
BEGIN TRANSACTION
EXEC Sp_executesql @statement
COMMIT TRANSACTION
END try
BEGIN
我可以通过尝试在同一个TransactionScope中打开两个连接(即使是第一个连接在打开下一个连接之前已经关闭)来成功地再现这个结果,如下所示:
var connectionString = "some connection";
using (var t = new TransactionScope())
{
using (var con1 = new OracleConnection(connectionString))
{
con1.Open();
}
using (var co
1/下面的代码片段显示了预期的错误:插入语句与外键约束FK_.冲突
SET XACT_ABORT ON;
BEGIN TRANSACTION
INSERT INTO linkedsrv1.db1.[dbo].tbl1 ([Col1], [Col2])
VALUES (1200, 0)
COMMIT TRANSACTION
[2]但是当我在开始尝试/捕捉时,错误信息是模糊的:Msg 1206,级别18,状态118,行18微软分布式事务协调器(MS )已经取消了分布式事务。
SET XACT_ABORT ON;
BEGIN TRY
我想在Server1.DB1中执行一个存储过程,这个存储过程将在另一个使用动态SQL的存储过程中执行,它将在Server1.DB2中执行。
我需要使用begin/end transaction来确保所有东西都执行了,否则所有东西都失败了。
问题是:在这种情况下,使用指向不同数据库的动态SQL,事务可以工作吗?
喜欢
BEGIN TRANSACT
--Set Status to "In Progress"
SET @Qry = N'EXEC '+ @DB2 + '.[dbo].[StatusUpdate] @Id, @Status
我尝试在循环中使用事务作用域。整个循环使用到数据库的单个连接进行。我使用entity Framework4进行数据库访问。在循环的第二次迭代期间,当LINQ to Entites查询执行时,将引发异常,声明服务器上的MSDTC不可用。
我读到过显式地打开连接然后征募事务应该可以解决这个问题,但事实并非如此。下面的示例代码反映了正在发生的基本操作。
对如何防止升级到MSDTC有什么建议吗?
Using context = New MyEntities()
Dim connection = context.Connection
connection.Open()
For
我已经在Server上创建了一个“后插入”触发器。
USE [CSPFContactCenter]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[SendSMS_INSERT]
ON [dbo].[tblSmsSend]
AFTER INSERT
AS
BEGIN
declare @Text nvarchar(max)
declare @MobileNumber nvarchar(max)
set @Text = (SELECT TOP 1 Text FROM tblSmsSe
从甲骨文网站上说,我们不需要参考Oracle.ManagedDataAccessDTC.dll,
对于我的项目,当我没有将dll放在Bin目录中时,它会抛出异常。
Could not load file or assembly 'Oracle.ManagedDataAccessDTC, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified.
我设定Orac
我有一个结构,设置了对服务器上的WCF服务的多个服务调用。我每个调用都实例化了多个DbContexts。我希望将这些调用中的一些分组到服务器上的单个事务中,同时排除可能在同一时间发生的其他调用。这个是可能的吗?
我的上下文都是在单个服务器上的单个应用程序中管理的,并且所有上下文都使用相同的连接字符串。
我在找像这样的东西
var transKey = transService.BeginTransaction(); // creates a transaction of some kind.
service1.Execute(transKey); // on the server places