捕获 host_name() 的输出作为 BCP 的默认列值

Capture output of host_name() as default column value for BCP

使用 Sybase ASE 16

我有一个 table 使用 tsql 函数 host_name() 来提供默认列值:

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

table 正常工作和填充。但是,我想 BCP(批量复制)此 table 中的所有数据到其他地方,以便为 monitoring/reporting/etc 暂存它。这将发生在许多 table 具有与此类似架构的情况下。

我的问题如下:bcping 到不同主机上的不同数据库后,host_name() 的默认值更改以反映 CURRENT 它所在的主机。意思是,就好像 bcp 正在传递函数 host_name() 本身,而不是它最初提供的值。我希望 bcp 从源中传递默认值 host_name()。

示例:db1 的主机为 123。我想将值 123 bcp 到另一个主机为 456 的数据库。相反,bcp 传递 host_name() 本身,这将更改 '123 的所有值'在调table到456.

想法?

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

否则,我想我更改了填充 table 的插入语句。目前很简单:

exec sp_monitorconfig 'number of open databases', exampleTable

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

让我知道这是否有意义。

谢谢

我已将 table 架构中的 host_name() 替换为 asehostname(),我的问题已解决。 host_name() 每次都返回执行 bcp 作业的机器的名称,而不是数据来自的 ASE 主机。