使用opendatasource是否只能导入服务器端的EXCEL文件呢?可否导入客户端的呢?

解决方案 »

  1.   

    如果这个方法不行,那么是否有其他方法来实现客户端EXCEL文件导入到SQL中呢?
    谢谢!
      

  2.   

    只能倒服务器端的EXCEL文件的,客户端到服务器端的EXCEL文件传输要另外想办法的
      

  3.   

    你可以参考一下zjcxc(邹建)的方法zjcxc(邹建)凡是使用T-SQL语句实现的操作, 里面涉及到的文件和目录均是相对SQL Server服务器而言,与哪一台客户机发起的操作无关 
    例如: 
    c:\a.xls 肯定是指 SQL Server上的 c:\a.xls
    \\aa\a\a.xls 肯定是在 SQL Server 服务器上我的电脑中能访问到的 \\aa\a\a.xls因此, 如果你使用 openrowset 来导入数据,则必须保证你的文件在 SQL Server 服务器,或者该服务器能访问的共享目录中. 否则是肯定不行的.关于这个问题,你可以这样解决:创建DTS包:
    可以选择任意一台有需要导入的文件和能连接目标服务器且安装有SQL Server的电脑来完成此工作.
    方法一:
    1. 运行SQL Server的"导入和导出数据"工具
    2. 根据步骤, 设置好从文件导入数据到指定SQL Server的处理
    3. 在"保存、调度和复制包"这步,选择"保存DTS包"--"结构化存储文件"
    4. 在接下来的步骤中, 输入DTS包的"名称"和保存的文件名方法二:
    企业管理器--数据转换服务--本地包--新建包
    在包设计器里按你的需要设置好数据导入处理(一般包含一个源数据连接(例如 excel/text),一个目标数据连接,一个转换数据任务)
    设计好包,单击菜单中的"包"--"保存包", 输入"包名称", 在"位置"中选择"结构化存储文件",并且输入包文件名
    在要上传数据的文件所在的电脑中, 安装DTSRUN实用工具(可以通过复制SQL Server服务器上的相关文件或者安装sql server客户端获得)
    然后在命令提示符下使用DTSRUN执行你的DTS包(也可以在程序中通过shell调用外部命令来调用DTSRUN):
       DTSRUN /F "DTS包文件名" /N "DTS包名"如果你希望通过设置共享来解决此问题,参考下面的设置备份文件共享目录的方法来解决问题下面假设A服务器上的数据库备份到B服务器(限两台服务器在同一局域网内,允许目录共享访问)
    1.机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
    我的电脑
    --控制面板
    --管理工具
    --计算机管理
    --用户和组
    --右键用户
    --新建用户
    --建立一个隶属于administrator组的登陆windows的用户2.在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
    我的电脑--D:\ 新建一个目录,名为: BAK
    --右键这个新建的目录
    --属性--共享
    --选择"共享该文件夹"
    --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
    --确定
    3.设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
    开始--程序--管理工具--服务
    --右键 MSSQLSERVER
    --属性--登陆--选择"此账户"
    --输入或者选择第一步中创建的windows登录用户名
    --"密码"中输入该用户的密码
    --确定
    --同样的方法设置 SQLSERVERAGENT4.在A机器上完成对B机器BAK目录的映射5.查询分析器中执行下面的语句,检验是否成功:
      exec master..xp_cmdshell 'dir 映射的盘符'