![](/img/trans.png)
[英]System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near '@med_data'
[英]Package fails because System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near 's'
我的包在几天内完全正常,今天每当我尝试运行它时,它都会从文件夹中的第一个文件中传输几列并失败。
我得到的错误是:
System.Data.SqlClient.SqlException (0x80131904):'s' 附近的语法不正确。
字符串后的非封闭引号
'','C:\\Users\\svojnovic\\Dropbox\\test\\2016-08-31 Race 3 Scale Sheet.csv')'。
我在脚本任务中的代码是:
SqlConnection myADONETConnection = new SqlConnection();
myADONETConnection = (SqlConnection)(Dts.Connections["DBConn"].AcquireConnection(Dts.Transaction) as SqlConnection);
// Writing Data of File Into Table
int counter = 0;
string line;
// MessageBox.Show(fileName);
System.IO.StreamReader SourceFile = new System.IO.StreamReader(fileName);
while ((line = SourceFile.ReadLine()) != null)
{
if (counter > 0)
{
string query = "Insert into " + TableName + " Values ('";
query += line.Replace(FileDelimiter, "','") + "','" + fileName.Replace(SourceFolderPath,"") + "')";
MessageBox.Show(query.ToString());
SqlCommand myCommand1 = new SqlCommand(query, myADONETConnection);
myCommand1.ExecuteNonQuery();
}
counter++;
}
SourceFile.Close();
// move the file to archive folder after adding datetime to it
File.Move(fileName, ArchiveFolder + "\\" + (fileName.Replace(SourceFolderPath, "")).Replace(FileExtension, "") + "_" + datetime + FileExtension);
Dts.TaskResult = (int)ScriptResults.Success;
可以以不同的方式提出这个问题:如果您在脚本任务而不是数据流任务中导入平面文件,使用 SSIS 有什么好处?
您可以简单地添加数据流任务并使用平面文件源和 OLEDB 目标将数据从平面文件导入 SQL 表。 另一方面,这将消除连接 SQL 命令导致的 SQL 注入风险。
(1) SQL 批量插入
(2) SQL OPENROWSET
(3) C#参数化查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.