Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 同时使用Excel和Microsoft SQL Server连接字符串_Sql Server_Excel_Vba_Ssms_Adodb - Fatal编程技术网

Sql server 同时使用Excel和Microsoft SQL Server连接字符串

Sql server 同时使用Excel和Microsoft SQL Server连接字符串,sql-server,excel,vba,ssms,adodb,Sql Server,Excel,Vba,Ssms,Adodb,我的任务是将excel表中的新记录添加到Microsoft SQL Server表中,为此,我计划使用ADODB对象;但是,我的SQL语句没有执行,我认为这与我的连接字符串有关 在我的代码中,我写下了我计划最终使用的SQL语句,但当我尝试时: sql=从[Provider=SQLOLEDB;数据源=hpwfh-ssql01;\u]中选择* 初始目录=HPW DataIntegrated Security=SSPI;受信任的连接=是].Hubspot\u数据 一个简单的select语句,它甚至不起

我的任务是将excel表中的新记录添加到Microsoft SQL Server表中,为此,我计划使用ADODB对象;但是,我的SQL语句没有执行,我认为这与我的连接字符串有关

在我的代码中,我写下了我计划最终使用的SQL语句,但当我尝试时:

sql=从[Provider=SQLOLEDB;数据源=hpwfh-ssql01;\u]中选择* 初始目录=HPW DataIntegrated Security=SSPI;受信任的连接=是].Hubspot\u数据 一个简单的select语句,它甚至不起作用

子更新1 Dim cn、rs作为对象、路径作为字符串、名称作为字符串、sql作为字符串、文件作为字符串 path=T:\Marketing\Data Analytics\Hubspot SQL数据 name=Hubspot\u数据 file=path&\&name&.xlsx Set cn=CreateObjectADODB.Connection 与cn .Provider=Microsoft.ACE.OLEDB.12.0 .connectionstring=数据源=&文件&;扩展属性=Excel 12.0 Xml;HDR=是;只读=假;IMEX=0; 打开 以 sql=插入[Provider=SQLOLEDB;数据源=hpwfh-ssql01;初始目录=Hubspot\u数据;集成安全性=SSPI;可信连接=Yes]。Hubspot\u数据&_ 从[Provider=SQLOLEDB;Data Source=hpwfh-ssql01;Initial Catalog=Hubspot\u Data;Integrated Security=SSPI;Trusted\u Connection=Yes]中选择_ 除了从[hubspot-crm-exports-sql-data-20$]中选择* 设置rs=cn.Executesql 端接头 只是附带说明:表的名称与数据库的名称相同

对于这段代码,我得到了三个不同的错误:

Microsoft Access数据库引擎无法为对象“区域”设置fin 确保对象存在,并拼写其名称和路径名 正确地我没有拼错Hubspot_数据

外部表不是预期的格式

Microsoft Access数据库引擎无法打开或写入该文件 我的文件路径“\My Documents\Provider=SQLOLEDB.XLSX”。它已经打开了 由其他用户独占,或者您需要查看和写入其 数据


很明显,电脑去错了地方取回它需要的桌子,我不知道哪里出了问题。感谢您的帮助。

从SQL Server对象资源管理器获取数据库的属性,并复制完全相同的连接字符串。然后将其复制到项目的appsettings.json文件中。看起来是这样的:

"connectionStrings": {
    "ApiDbConnectionString": "Server=(localdb)\\mssqllocaldb;Database=ApiDB;Trusted_Connection=True;"
  }

然后,您需要在连接字符串中创建一个对象,并使用该对象打开与数据库的连接,然后将SQL查询写入数据库。首先,您需要两个连接—一个用于SQLSvr,另一个用于Excel。 然后查询您的源Excel并单独插入到SQLSvr中。您将无法将这些内容混合到一个查询中

Sub SelectInsert()
Dim cn As Object, rs As Object, sql As String
Dim conSQL As Object, sInsertSQL As String

'---Connecting to the Data Source---
Set cn = CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    .Open
End With

Set conSQL = CreateObject("ADODB.Connection")
With cn
    .Provider = "SQLOLEDB"
    .ConnectionString = "Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;"
    .Open
End With


'---Run the SQL SELECT Query---
sql = "SELECT * FROM [Sheet1$]"
Set rs = cn.Execute(sql)

Do  'the insert. Each rs(n) represents an Excel column.
   sInsertSQL = "INSERT INTO table VALUES(" & rs(0) & ";" & rs(1) & ";" & rs(2) & ")"
   conSQL.Execute sInsertSQL
   rs.MoveNext
Loop Until rs.EOF

'---Clean up---
rs.Close
cn.Close
conSQL.Close
Set cn = Nothing
Set conSQL = Nothing
Set rs = Nothing
End Sub

我想你对它的工作原理感到困惑。对连接执行查询。您没有从连接中选择。使用连接字符串创建连接对象。然后你需要打开连接。最后执行一个标准查询,连接字符串不是查询的一部分。我建议你找到一些关于VBA查询的基本教程。不知道这是如何解决OPs问题的。他们的语法在每一个查询上都是不正确的,这甚至都没有试图解决。并且没有appsettings.json文件,因为他们正在使用Access。