此代码效果很好
USE BellariaNetAssets
DECLARE @printFile VARCHAR(1000)
SELECT ip FROM fnMuninCfg()
但是这段代码失败了:
USE BellariaNetAssets
DECLARE @printFile VARCHAR(1000)
SET @printFile = 'BCP "SELECT ip FROM fnMuninCfg()" queryout "C:\users\aag\desktop\munin'
+ '.cfg" -c -T -t "|" '
EXEC xp_cmdshell @printFile
错误是:
错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的对象名称' fnMuninCfg'。
错误= [Microsoft] [SQL Server的ODBC驱动程序13]无法解析列级排序规则
BCP复制失败
一个好的灵魂可以向我解释为什么BCP确认对象名称无效?该功能似乎没问题(代码#1)。
答案 0 :(得分:2)
尝试完全限定函数名称(例如Adventureworks.dbo.fnMuninCfg())
我的猜测是,当你调用它时,我相信xp_cmdshell在master db的上下文中运行,所以当你调用一个非限定函数时,它默认在master db中查找你的函数。让我知道它是否有效!