从MS SQL 2012 odbc连接读取表时无效的描述符索引

问题描述 投票:0回答:1

我已经使用企业架构创建了MS SQL 2012数据库,并且我正在使用R以及dbiodbc包将数据上传到该服务器。现在,我从MS SQL 2012服务器读取一个表时遇到问题,我需要与另一个对该表具有FK约束的表合并。让我感到沮丧的是,我可以下载空表,但不能下载之前附加的填充表。

这里是EA数据库建模的图片:enter image description here

存在一个带有有关公司的信息的主表“ unternehmen”,该表指向带有其他信息的辅助表“ eigentumsverhaeltnisse”,并且一个信息链接到包含该信息标签的元表“ eigentuemer”。 (我不一定需要这个,但是其他地方也有类似的情况)。整个数据库(大约100个表)是使用DDL生成的企业架构师创建的。如果需要,我可以添加更多信息。

所以我手动创建了元表,并使用以下代码将其上传到服务器:

con <- DBI::dbConnect(odbc::odbc(),
                      Driver = "SQL Server",
                      Server = "MY server", 
                      Database = "EA_DB",
                      encoding = "latin1")
df_temp<-data.table(bezeichnung=c("Land", … , "Staat"))
DBI::dbWriteTable(con, “eigentuemer”, df_temp, append=TRUE)

还有更多代码来创建辅助表,从SQL Server加载辅助表后,我将其与元表合并,以包括FK。然后,也使用与上面相同的代码将其上传。

df_temp <- code to create the other table 
df_temp_sql<-DBI::dbReadTable(con, “eigentuemer”)
df_temp<-merge(df_temp,df_temp_sql,by="bezeichnung")
some other code
DBI::dbWriteTable(con, “eigentumsverhaeltnisse“, df_temp, append=TRUE)

enter image description here

现在,我无法重新加载以前附加的表,这确实令人沮丧,并且当表为空时,我能够使用相同的命令。

df_temp_sql<-DBI::dbReadTable(con, “eigentumsverhaeltnisse“,)
Error in result_fetch(res@ptr, n) : 
  nanodbc/nanodbc.cpp:2966: 07009: [Microsoft][ODBC SQL Server Driver]Ungültiger Deskriptorindex 

我假设“ungültigerDeskriptorindex意味着无效的描述符索引。该表存在

DBI::dbExistsTable(con, "eigentumsverhaeltnisse")

我发现了类似的问题,但是我没有尝试过不同的解决方案

df_temp_sql_4<-DBI::dbReadTable(con,DBI::SQL("eigentumsverhaeltnisse"))
df_temp_sql_5<-DBI::dbReadTable(con,"dbo.eigentumsverhaeltnisse")
df_temp_sql_6<-DBI::dbReadTable(con,DBI::SQL("dbo.eigentumsverhaeltnisse"))

我也尝试过dgGetQuery但遇到相同的错误

Bin <- DBI::dbGetQuery(con, "SELECT [id], [konzernname], [eigentuemer_id], [eigentuemer_andere], 
                          [weitere_geschaeftsfelder], [konzernteil] FROM [EA_DB].[dbo].[eigentumsverhaeltnisse]")
Error in result_fetch(res@ptr, n) : 
      nanodbc/nanodbc.cpp:2966: 07009: [Microsoft][ODBC SQL Server Driver]Ungültiger Deskriptorindex

类似的问题是:Import Tables from SQL Server into RdbReadTable error in R: invalid object namedbReadTable error in R: invalid object name

sql r sql-server odbc dbi
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.