اگه نخوام تو QA ، یه Transaction شروع کنم که بدون این دستور هم کار میکنه. ولی من اینو گذاشتم تو بدنه تریگر باز هم نشد.
CREATE TRIGGER trgPRT ON PRT_T FOR INSERT AS
SET IMPLICIT_TRANSACTIONS OFF
DECLARE @PRT NUMERIC(10,0)
DECLARE @SQL NVARCHAR(250)
DECLARE @CODE NUMERIC(1,0)
SELECT @PRT =PRT_CODE FROM inserted
SET @SQL=N'SELECT @CODE=CASE WHEN CODE1 IS NOT NULL THEN CODE1 ELSE 1 END FROM OPENROWSET(''MSDAORA'',''***.world'';''USER'';''PA SS'',
''SELECT MIN(CODETYPE)AS CODE1 FROM BOM.MJR_T WHERE MOJ_TYPE=2 AND MJR_DELDATE IS NULL AND PRT_PRT_CODE=' + STR(@PRT) + N''')'
EXEC SP_EXECUTESQL @SQL,N'@CODE NUMERIC(1,0) OUTPUT',@CODE OUTPUT
INSERT INTO tblNComponent(PRT_CODE,PrtType) VALUES(@PRT,@CODE)
GO
خطا:
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA' reported an error. The provider did not give any information about the error.
OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x80004005: The provider did not give any information about the error.].
فکر میکنم که SQL 2000 مشکل داره. راستی به OPTION های Provider که تو قسمت Linked Server هست ربطی نداره؟