连接好像成功了,但新问题提示: 由于列 "user_no",链接服务器 "srv2" 的 OLE DB 访问接口 "SQLNCLI10" 无法 INSERT INTO 表 "[srv2].[bsv5].[dbo].[dt_user]"。数据值违反了该列的完整性约束。就是前台也写了值,但是插入时候为啥还是空,所以提示违反了完整性 我做了测试,把这几个字段写成固定值就可以插入进去了create trigger tr_insert_usra01 on usra01 for insert as set xact_abort on insert srv2.bsv5.dbo.dt_user(user_lname,user_no,user_id) select A0101,C01TC,A0177 from inserted go就是前台写了A0101,C01TC,A0177 字段都有值,但执行时候却提示违反了约束,查了一下这个三个字段再插入时候都是空的,为啥啊!!
A0101,C01TC,A0177 字段明明都有值,就只在执行触发器时候却成了空值。
建议 1.查看插入的目标表是否有其他的约束? 如foreign key,not null,唯一约束等等.看具体是违反了哪一条. 2.调试时,可以暂时将select A0101,C01TC,A0177 from inserted的值插入一个本地的自定义的表(表上无任何约束的). 这样就能更直观的看到数据本身了.
--開啓外部RPC配置,允许其它SQL Server使用RPC远程连接到本SQL Server
EXEC sp_serveroption 'mgfTS','rpc out','TRUE' (也可在企业管理器中-->数据库-->安全-->链接数据库-->点击你需要配置的链接数据库-->属性页-->
"server options"-->勾选rpc out)以下是在被訪問端數據庫設置
--設定允許外聯exec sp_configure 'show advanced options',1 --開啓高級設置
reconfigure WITH OVERRIDE;exec sp_configure 'Ad Hoc Distributed Queries',1--允許openrowset opendatasource訪問
reconfigure WITH OVERRIDE;
exec sp_configure 'show advanced options',0 --關閉高級設置
reconfigure WITH OVERRIDE;
[触发器所在表的DML语句]
commit tran
连接好像成功了,但新问题提示:
由于列 "user_no",链接服务器 "srv2" 的 OLE DB 访问接口 "SQLNCLI10" 无法 INSERT INTO 表 "[srv2].[bsv5].[dbo].[dt_user]"。数据值违反了该列的完整性约束。就是前台也写了值,但是插入时候为啥还是空,所以提示违反了完整性
我做了测试,把这几个字段写成固定值就可以插入进去了create trigger tr_insert_usra01 on usra01
for insert
as
set xact_abort on
insert srv2.bsv5.dbo.dt_user(user_lname,user_no,user_id)
select A0101,C01TC,A0177 from inserted
go就是前台写了A0101,C01TC,A0177 字段都有值,但执行时候却提示违反了约束,查了一下这个三个字段再插入时候都是空的,为啥啊!!
1.查看插入的目标表是否有其他的约束? 如foreign key,not null,唯一约束等等.看具体是违反了哪一条.
2.调试时,可以暂时将select A0101,C01TC,A0177 from inserted的值插入一个本地的自定义的表(表上无任何约束的).
这样就能更直观的看到数据本身了.
所以
1应该之前的错误是这三个值是空的,那么我前台这三个值确实是有值的,不知道为啥到执行触发器时候没值了,把触发器删除本地是可以成功。
2我在我本地搭了相同的俩库,执行这个触发器是完全没问题的