触发器问题(急!!)

btlyeo 2007-08-15 07:45:28
现在有两个数据库A和B,他们不在一个服务器上,IP分别是192.168.0.1和2。

A数据库中有个临时表T_push,里面的数据每隔3秒左右就被取走。我想每次这个表里插入数据的时候,就往B服务器(IP是2)的T_Same表里插同样的一条记录,这个要怎么做?触发器里的代码要怎么写?

麻烦高手写的详细点,最好是用企业管理器做大部分工作。

这个问题我想主要难在是两个不同的数据库,有两个IP的问题上吧?

谢谢!
...全文
246 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
服务器 'NMCOVICS-0076' 上的 MSDTC 不可用。


你两台服务器上的分布式事务没有开

把DTC服务打开
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
服务器: 消息 8501,级别 16,状态 3,过程 Checks,行 5
服务器 'NMCOVICS-0076' 上的 MSDTC 不可用。
这个是什么错误!!?
Limpire 2007-08-15
  • 打赏
  • 举报
回复
sp_addlinkedserver和sp_addlinkedsrvlogin

联机帮助里面有很多例子代码,自己参照建立多练习就可以了。
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
高升大哥,这个东西都没接触过,麻烦你帮忙写全点,多谢,我用Limpire(昨夜小楼)的方法在企业管理器上都搞通了,我想学学用代码写,多谢!我先结帖子!
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
是无效的产品名
那个是我忘记写了

你随便写的东西进去,比如SQL 或者 192.168.0.2 之类都可以
没什么实际意思
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
LinkServer里面写的用户名和密码是另一台服务器就是 192.168.0.2 上的用户名和密码
不要写错了
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
高升的方法有点问题!
------------------------------------------------------------------------------------
服务器: 消息 15429,级别 16,状态 1,过程 sp_addlinkedserver,行 72
'(null)' 是无效的产品名。
服务器: 消息 15015,级别 16,状态 1,过程 sp_addlinkedsrvlogin,行 40
服务器 'LinkServer' 不存在。请用 sp_helpserver 来显示可用的服务器。
Limpire 2007-08-15
  • 打赏
  • 举报
回复
最好在0.1上打开查询分析器,验证一下:

select top 1 * from Link2.master.dbo.sysobjects

insert ....

delete ...
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
在192.168.0.1上建LinkServer

USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'LinkServerName',
@provider=N'SQLOLEDB', @datasrc=N'192.168.0.1'
GO

USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'LinkServerName',
@locallogin = NULL ,
@useself = N'False',
@rmtuser = N'sa',
@rmtpassword = N''--这里是密码
GO
Limpire 2007-08-15
  • 打赏
  • 举报
回复
其中一种方法:

192.168.0.1上,打开企业管理器 -> (local)(Windows NT) -> 安全性 -> 连接服务器 -> 右键 -> 新建连接服务器 -> 常规 -> 连接服务器:Link2 -> 其它数据源 -> Microsoft OLE DB Provider for SQL Server -> 数据源:192.168.0.2(也可用机器名) -> 安全性 -> 用此安全上下文进行 -> 输入远程登录用户名和密码。
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
大哥!麻烦写的详细点,我试了一下,是这样子么?
(1)在.1服务器上:企业管理器—安全性—链接服务器—创建连接—服务器类型(SQLserver)—用户名密码
(2)在.1服务器上:企业管理器—数据库—表名—所有功能—触发器管理—里面写入代码
insert [192.168.0.2].数据库.dbo.表 select * from inserted
set nocount off
这样子好象报错!

--------------------------------------------------------------------------
OLE DB 提供程序 'SQLOLEDB' 未能 INSERT INTO 表 '[192.168.0.100].[EmoAsp].[dbo].[pushmsg]'(由于列 'ID')。用户没有写入该列的权限。
[OLE/DB provider returned message: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' IRowsetChange::InsertRow returned 0x80040e21: Data status sent to the provider: [COLUMN_NAME=ID STATUS=DBSTATUS_S_OK], [COLUMN_NAME=phonenumber STATUS=DBSTATUS_S_OK], [COLUMN_NAME=msg STATUS=DBSTATUS_S_OK]. Data status returned from the provider: [COLUMN_NAME=ID STATUS=DBSTATUS_E_PERMISSIONDENIED], [COLUMN_NAME=phonenumber STATUS=DBSTATUS_E_UNAVAILABLE],...
Limpire 2007-08-15
  • 打赏
  • 举报
回复
链接服务器可在企业管理器建立,也可用系统存储过程建立。
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
192.168.0.1上建立到2的链接服务器:Link2
要怎么建立,不好意思,不会!
Limpire 2007-08-15
  • 打赏
  • 举报
回复
192.168.0.1上建立到2的链接服务器:Link2

A库T_push创建触发器:

create trigger on T_push
for insert
as
set nocount on
insert Link2.数据库.dbo.表 select * from inserted
set nocount off
go
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
没描述清楚!不是临时表,T_push是一个实际存在的表,只不过里面的数据每3秒就会被取走并删除!

LinkServer要怎么建?麻烦把完整的步骤帮忙写下,多谢!!!
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
临时表上无法建触发器

看来LZ要换个方法了,或者换个实体表


两个数据库不在一个服务器上面可以通过建立LinkServer互相访问

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧