问题标签 [system.data.sqlclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
56678 浏览

c# - 为什么使用带有 SqlTransaction 的 using 语句?

我遇到了一些关于我在代码中使用的 SqlTransaction 的问题。在我的谷歌搜索过程中,我看到很多人使用带有 SqlTransaction 的 using 语句。

将这种类型的语句与 SqlTransaction 一起使用有什么好处和/或区别?

目前我的代码如下所示:

一种方式比另一种方式有什么优势?

0 投票
1 回答
102 浏览

sql-server - System.Data.SqlClient 将存储过程中的 SQL Server PRINT 语句与 RAISERROR 消息连接起来

我相当简单的存储过程在第 44 行执行此操作:

System.Data.SqlClient使用 .NET Framework库在客户端调用存储过程:

ex被捕获时,其值为blah blah blah+ CRLF +1259

那是1259从哪里来的?它是否对应于严重性 11?

0 投票
0 回答
116 浏览

c# - 使用 System.Data.SqlClient 将对称密钥传递给调用 exec sp_executesql 的 SQL Server 存储过程的正确方法

我在 SQL Server 2017 中有一个由受密码保护的对称密钥加密的列。在服务器上,我可以sp_foo从另一个存储过程中调用,如下所示:

sp_foo我们有这个:

这在服务器端工作得很好。

但是,在客户端,当我在 a 中将 @id 和 @symkey_password 作为标准参数传递SqlCommand并尝试使用时SqlDataAdapter.Fill

有时我会收到以下错误:

超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)

有时我会得到这个:

密钥未使用指定的解密器加密。密钥“MY_SYM_KEY”未打开。使用前请打开钥匙。

当存储过程调用时,在 C# 中调用存储过程客户端的正确方法是什么sp_executesql

0 投票
1 回答
338 浏览

c# - 使用 Azure C# 使用 System.Data.SqlClient 时找不到“sni.dll”

我正在尝试通过 Azure Function App 从我的 sql 服务器运行 SELECT 查询,以便稍后处理从中提取的数据。我对 Azure 还很陌生,所以我可能会遗漏一些东西。我的运行时版本是 ~3。这是一个 C# HTTP 触发函数。

我的代码完全基于此博客条目https://randypaulo.com/2018/12/19/querying-azure-sql-database-using-azure-functions-2-0-to-return-json-data/

这是它中断的部分,在 conn.Open();

该函数编译成功,并带有大约 10 多个如下所示的警告。

但是,当涉及到实际运行查询时,在 conn.Open(); 线。我收到一条很长的错误消息。但它说“无法加载 DLL 'sni.dll' 或其依赖项之一:”

我遇到了一些限制,所以我要列出它们:

  • 无法使用 Visual Studio/Visual Studio Code。
  • 只能在门户上开发
  • 无法切换到运行时 ~2
  • 无法创建新资源

这是我到目前为止尝试过的

  • 改用 Microsoft.Data.SqlClient > 我无法安装软件包。(包参考安装成功,但编译时显示缺失)
  • 创建了一个 function.proj 文件并列出了 Package References > 它运行和恢复包,但我的 run.csx 似乎没有使用它们。
  • 使用 dotnet add package System.Data.SqlClient 删除和添加包

什么有效:

  • 连接字符串 > 我在控制台中使用 sqlcmd 成功运行了一个查询。

我的问题:

  • 有没有办法将 sni.dll 从 \shared\Microsoft.AspNetCore.App\2.2.14 文件夹复制到 \shared\Microsoft.AspNetCore.App\3.1.11 文件夹?(通过控制台没有成功,禁止)

  • 如何通过 Azure 门户引用/安装自定义或特定库?(如 #r "Newtonsoft.Json" 或 #load "file.csx")

  • 我是否需要提及我在 run.csx 文件中创建的 function.proj 文件才能正常工作?如何?

0 投票
0 回答
46 浏览

.net - 在 T-SQL 中,哪个错误严重级别(如果有)允许语句继续,但导致 SqlClient 库显示一条消息

我不清楚 T-SQL错误严重级别 ,因为它们与 System.Data.SqlClient.NET 客户端应用程序中的库有关。[为回应近距离投票的建议,我澄清了关于严重程度“意味着”的答案如何不能解决我的问题的粗体字]。

哪个 T-SQL 错误级别允许 T-SQL 语句继续,但会导致前端显示消息

我以为它会是 10 级,但它不会在前端应用程序中显示消息;文档说

出于兼容性原因,数据库引擎在将错误信息返回给调用应用程序之前将严重性 10 转换为严重性 0。

0 投票
1 回答
92 浏览

tsql - SQL Server 能否在不涉及任何错误的上下文中向 .NET System.Data.SqlClient 程序返回信息性消息

.NET 客户端程序是否可以使用 System.Data.SqlClient 库与后端 SQL Server 进行通信,服务器是否可以在不涉及任何错误的上下文中向客户端程序发送信息性消息以及客户端程序来获取已发送的消息?

这是一个额外的伪代码示例,更接近实际用例;注意不同的严重性:

PS 在客户端命令对象中不使用 OUT 参数或 RETURN 值参数。

PPS 我正在使用 SqlDataAdapter.Update 方法,并且一些代码在 SqlCommand 对象上使用了 DataReader。

0 投票
0 回答
113 浏览

c# - 放值后ExecuteNonQuery违反主键?

我正在尝试编写一个 CRUD 应用程序,但 Create 方法有问题。程序因错误而崩溃

System.Data.SqlClient.SqlException:'违反主键约束'PK_Pracownicy'。无法在对象“dbo.Pracownicy”中插入重复键。重复键值为 (11)。该语句已终止。'

但是我可以在我的 SQL Server 中看到这个位置被添加到 Praconicy 表中,所以我不知道哪里有问题。在我将新值放入表后,它看起来像是生成了错误

在此处输入图像描述

谢谢

0 投票
1 回答
358 浏览

c# - 在 .NET Core/.NET 5+ 中使用 TransactionScope 和 SQL 连接池时如何避免 PlatformNotSupportedException

在 Web 服务中,我正在查询 SQL Server 2016 数据库。使用 .NET TransactionScope 如下在我的服务层中保留事务管理,但在我的数据层(“存储”类)代码中保留数据查询/命令,我们有几个地方遵循这种模式:

这些“存储”方法中的每一个都遵循这种模式(使用 Dapper,尽管我怀疑这并不重要):

这在大多数呼叫中都非常有效,但有时我会得到以下信息(尽管很少见):

System.PlatformNotSupportedException:此平台不支持分布式事务。

那么,在上面的示例中,是否可能是 store1.Exists 运行,获取连接,将其加入事务,运行其查询,关闭,然后有时在 store2.Insert 可以运行之前,其他一些不相关的线程从由于 .NET Core(或 .NET 5+)不支持分布式事务,已打开事务的连接池尝试运行查询并因此引发 PlatformNotSupportedException?

如果是这样,我怎样才能在不传递我的联系的情况下克服这个问题?

如果不是,还有什么可能导致此异常?

0 投票
0 回答
91 浏览

sql-server - Python.NET - 尝试在 SQL Server 中执行存储过程

全部,

我希望有人可以帮助我尝试使用 IronPython 和 CLR 运行存储过程。

我要做的就是让下面的存储过程运行。当它运行并到达 ExecuteNonQuery 行时,它会跳转到 SQLException 但我无法检索消息告诉我的内容。我显然做错了什么,但我无法弄清楚。

下面是来自 SQL Server 的存储过程(仅供参考 - 我没有更改过程;仅用于复制/粘贴目的):

这是应该执行该存储过程的 IronPython 代码:

0 投票
1 回答
676 浏览

c# - System.Data.SqlClient.SqlException:'无效的列名'P1000'。'

有谁能够帮我?为什么我会收到此错误?

如果我从 prod_id 中删除仅留下数字的“P”,它可以工作,但如果我添加字母,它会显示“列名无效”。

我已经添加.ToString()了,但是为什么它仍然不能接受 varchar 而只能接受 int。

这是错误

这是我的代码

这是数据库表

这是表的数据