捕获 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 主机。
使用 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 主机。