【问题标题】:SQL Server 2008 BCP export throws: NativeError = 945, Database cannot be opened due to inaccessible files or insufficient memorySQL Server 2008 BCP 导出抛出:NativeError = 945,由于文件不可访问或内存不足,无法打开数据库
【发布时间】:2012-06-08 08:28:00
【问题描述】:

我正在尝试使用 BCP 导出到 CSV 文件,如下所示:

 DECLARE @SQL AS VARCHAR(1000)
 DECLARE @CMD AS VARCHAR(8000)

 SET @SQL='SELECT * from Pondor.dbo.tblLD'
 SET @CMD = 'bcp "' + @SQL + '" QUERYOUT "' + @FILE + '" -c -t "," -U"UserA" -P"Password" 

 exec master..xp_cmdshell @cmd

这不起作用并引发以下错误:

SQLState = 37000,NativeError = 945
由于文件不可访问或内存或磁盘空间不足,无法打开数据库“Pondor”。 有关详细信息,请参阅 SQL Server 错误日志。

执行SELECT * from Pondor.dbo.tblLD 可以工作并返回行。关于 BCP 命令有什么问题的任何想法?

【问题讨论】:

  • 当发出命令的用户是 sysadmin 组的成员时,xp_cmdshell 将在 SQL Server 服务运行的安全上下文中执行。当用户不是 sysadmin 组的成员时,xp_cmdshell 将模拟 SQL Server 代理代理帐户,该帐户使用 xp_sqlagent_proxy_account 指定。很可能您的用户没有访问您要 bcp 文件的目录的权限。

标签: sql sql-server-2008 bcp export-to-csv


【解决方案1】:

您没有在命令中指定服务器。添加具有正确值的-S 选项。如果您的服务器是服务器上的“默认”实例,您可以输入 -S.

Pinal Dave解释了修复数据库打开错误的步骤

  1. 如果可能,通过从硬盘中删除不必要的文件或添加更大容量的新硬盘来添加更多硬盘空间。

  2. 检查数据库是否设置为自动增长。

  3. 检查正在尝试访问数据库的帐户是否有足够的权限执行操作。

  4. 确保 .mdf 和 .ldf 文件在操作系统文件系统级别未标记为只读。

【讨论】:

  • 我接受了您的回答,因为这似乎是数据库问题。我在给我错误的测试服务器上运行它,但是当我更改为另一台服务器时,它可以正常工作。感谢您的建议和链接,这将有助于对测试数据库进行故障排除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 2017-07-05
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多