捕获host_name的输出作为BCP

问题描述

使用Sybase ASE 16

我有一个使用tsql函数host_name()提供认列值的表:

CREATE TABLE exampleTable 
  ( 
     id       INT,hostname VARCHAR(32) DEFAULT Host_name() 
  ); 

该表可以正常工作并填充。但是,我想对该表中的所有数据进行BCP(批量复制),以便将其暂存以进行监视/报告等。在具有类似这种模式的许多表上都会发生这种情况。

我的问题如下:bcping到不同主机上的另一个数据库后,host_name()的认值发生变化,以反映它所驻留的 CURRENT 主机上。这意味着,bcp好像正在传递函数host_name()本身,而不是其最初提供的值。我希望bcp改为从源传递认的host_name()。

示例:db1具有主机123。我想将值123 bcp传递给具有主机456的另一个db。取而代之,bcp传递host_name()本身,这会将已传输表中所有'123'的值更改为456。

有想法吗?

我对BCP相对缺乏经验,所以我不确定是否有保留认值的命令选项。我也在考虑使用CAST(host_name(),AS varchar(32))替换上表中的当前认值^

否则,我以为我要更改填充表的插入语句。当前非常简单:

exec sp_monitorconfig 'number of open databases',exampleTable

这会将系统存储的proc的结果集插入到我的表中。我不确定如何更改它以插入host_name()或它产生的值。

让我知道这是否有意义。

谢谢

解决方法

我用host_name()替换了我的表模式中的asehostname(),我的问题解决了。 host_name()每次都返回执行bcp作业的计算机的名称,而不是返回数据来自的ASE主机。