MSSQL没有发现其它指定目录(mssql找不到其他目录)
下的所有表
当使用Microsoft SQL Server (MSSQL)时,可能会发现没有发现其他指定目录下的所有表。此问题可能是由于MSSQL处理路径时发生了错误而导致的。本文将介绍如何正确解决这个问题,以便可以发现任何目录下的所有表。
首先,如果你有批处理或T-SQL代码,可以通过使用 xp_cmdshell 命令来将你的代码转换为命令行应用程序。这可以通过如下代码实现:
DECLARE @cmd varchar(8000)
SET @cmd= ‘myprogram.exe -a -b -c’
EXEC xp_cmdshell @cmd
使用 xp_cmdshell 命令后,就可以检测出其他指定目录下的所有表。此外,如果指定的目录中包含T-SQL脚本,可以在运行代码之前,使用 xp_cmdshell 命令来调用它们。
此外,你也可以使用 xp_dirtree 功能来发现其他指定的目录中的表。该功能会对所有子目录进行递归搜索,可以使用如下命令调用:
EXEC xp_dirtree ‘c:\sql’,1,1
xp_dirtree 功能可以搜索指定的目录中的文件,检测到.sql 和.tbl表格文件,然后返回文件大小和日期。该功能还可以检测出.tbl文件,其中包含有效的T-SQL代码。
另一个可以使用的功能是 xp_subdirs函数。它会搜索指定目录的子目录,并返回子目录路径列表。该函数可以用以下命令调用:
EXEC xp_subdirs ‘c:\sql’
使用此函数后,可以使用T-SQL的 SELECT 和 FROM 关键字,遍历该路径,以发现其他指定目录下的表。
另外,还可以使用 sp_tables_ex 以系统存储过程的形式,来检测任何数据库或目录下的所有表。该系统存储过程可以使用下面的代码调用:
EXEC sp_tables_ex ‘dbname’, ‘table_name’
使用该系统存储过程,可以确定数据库中是否存在特定的表,以及表中包含有多少列。
通过以上介绍,我们可以看出MSSQL没有发现其他指定目录下的所有表的问题,可以通过使用 xp_cmdshell、xp_dirtree、xp_subdirs 和 sp_tables_ex 系统存储过程等方法解决。总之,如果正确使用上述功能,就可以检测出指定目录下的所有表,而不会发生错误。