Tag: sql server

ConnectString在C#中不起作用

public static DataSet ParseDatabaseData(string sheetName) { string connectionString = “Provider=System.Data.SqlClient;Data Source= MHSPC56888_VM1\\SQLEXPRESS;Initial Catalog=xxxxxxx;User id=xx;Password=xxxxx;”; SqlConnection conn = new SqlConnection(connectionString); string strSQL = “SELECT * FROM [” + sheetName + “$]”; SqlCommand cmd = new SqlCommand(strSQL, conn); conn.Open(); DataSet dataset = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset); conn.Close(); return dataset; } 错误显示’provider’关键字错误。 请帮我纠正如何通过连接字符串连接数据库?

是否有exception错误类值列表及其含义? 特别是sqlexception

我正在使用数据库并捕获exception以检查各种条件。 我不能简单地捕获sqlException,因为它可能意味着很多东西,并且通常使用 catch (SqlException e) { if (e.Errors[0].Class == 14) { return 0; } else …….. 检查具体案例。 在这个例子中,第14类(至少据我所知)表示重复的条目。 另一个类意味着无法找到服务器,或拒绝连接或登录错误等。有谁知道可以找到这些错误类的列表? 谷歌搜索这是很困难的,因为任何带有“类”的东西都显而易见。

SQL拒绝加载测试中的连接

我在我的系统上运行负载测试。 在某个加载级别,我开始在日志中收到SQL错误: System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道Prprovidererror:40 – 无法连接到SQL Server)—> System.ComponentModel.Win32Exception(0x80004005):找不到网络路径 通过在有问题的SQL服务器上运行性能监视器,我发现了以下内容: CPU级别很少超过50%。 (在之前的迭代中,我看到它最大值为100%,所以我增加了VM的规格,这有助于将问题推向更高的负载水平。) 用户连接数超过8,000。 Sql Server的默认设置为32,767个最大连接数。 连接字符串指定每个数据库的最大池大小为1000个连接,并且服务器上有100个数据库。 负载测试在100个数据库之间随机分布,因此应该有相当均匀的分布,这意味着每个数据库大约有80个连接。 没有接近1k的限制。 还有哪些因素可能会导致Sql Server无法接受连接? 更新:额外信息:我正在使用Entity Framework Core(EF7)进行数据库连接,如果有帮助的话。

“事务已在事务范围内隐式或显式提交或中止”

我在两个不同的网络上有一个Web服务器和两个DB服务器,Db1和Db2(远程数据库)。 DB1:SQL Server 2008 R2,操作系统:Windows Server 2003 SP2 DB2:SQL Server 2000,操作系统:Windows Server 2003 R2 Web服务器:Windows Server 2003 R2 我想在这些数据库中插入两个不同的记录,我正在使用TransactionScope 。 using (TransactionScope tscope = new TransactionScope(TransactionScopeOption.RequiresNew)) { //open connection db 1 //insert into db1 //open connection db2 — the problem is here //insert into db2 tscope.Complete(); } 当我跟踪源代码时,插入第一个数据库成功完成但是当第二个连接想要打开时我遇到下面的错误。 错误: 事务已被隐式或显式提交或中止。 我已经配置了MSDTC,Distributrd事务协调器,一切都还可以。 我可以在我的数据库服务器中分配事务,我没有问题。 TransactionScope什么问题? 请帮我。 LINQ […]

将SqlDataReader写入即时窗口c#

我正在尝试调试抛出错误的SQL响应: 将varchar值’0.01’转换为数据类型位时转换失败。 这没有多大意义,因为对象没有任何bool。 码: using (var connection = _connectionProvider.GetDbConnection()) { connection.Open(); return connection.Query(query, parameters); } 执行的SQL(我手动添加参数): select * from (select top 1 BuildNumber, RateVersion, SampleId, Tariff, TariffStepName, Factor1, Result1 from dbo.Rates where Tariff = ‘Default’ and TariffStepName = ‘I_P’ and (RateVersion <= 1) and Factor1 = 'false' and (SampleId is null) order by RateVersion desc, […]

在T-SQL中处理来自CLR存储过程的多个结果

我有一些用C#编写的复杂算法作为CLR存储过程。 程序不是确定性的(取决于当前时间)。 程序的结果是两个表。 我没有找到任何解决方案如何处理T-SQL中存储过程的多结果。 这个过程的性能是关键(程序每隔约2秒调用一次)。 我发现更新表的最快方法是: UPDATE [db-table] SET … SELECT * FROM [clr-func] 它比通过ADO.NET从CLR过程更新db-table快得多。 我使用静态字段来存储结果,并在执行clr存储过程后查询它。 调用堆栈是: T-SQL proc -> CLR proc (MyStoredProcedure) -> T-SQL proc (UpdateDataFromMyStoredProcedure) -> CLR func (GetFirstResultOfMyStoredProcedure) -> CLR func (GetSecondResultOfMyStoredProcedure) 问题是,有时CLR函数在静态字段result空,但在CLR过程中result不为null。 我发现,有时CLR函数在另一个AppDomain中被调用而不是CLR过程。 但是,CLR过程仍在运行,可以执行下一个操作,不会抛出任何exception。 有没有办法,如何强制CLR函数在同一个AppDomain中作为“父”CLR程序调用? 或者是否有其他方式,如何实现我的意图? PS:最初复杂的算法是用T-SQL编写的,但性能很差(比C#中的算法慢约100倍)。 谢谢! 简化代码: // T-SQL CREATE PROC [dbo].[UpdateDataFromMyStoredProcedure] AS BEGIN UPDATE [dbo].[tblObject] SET … SELECT […]

在Ado.net C中动态构建Where子句#

我将在给定时间内接收大约1000条记录,我必须确定它们是现有记录还是新记录。 如果它们存在,我必须更新记录,如果是新的,则只需插入它们。 我不知道他们中的任何一个是否存在,或者它们是否都存在。 我认为最好对数据库进行一次查询并尝试查找数据库中是否存在任何查询并将其存储在内存中并在内存中检查该集合并检查它。 最初我被告知我1场将足以确定唯一性。 所以我想我可以在数据库中对1个字段做一个大的in子句,但现在我发现情况并非如此,我需要使用3个字段来确定记录是存在还是现在。 这基本上是一个和条款 select * from where columnA = “1” and ColumnB = “2” and ColumnC = “3” 我怎样才能在C#ado.net中正确地识别它? 我猜我需要有一些超级where子句? select * from where (columnA = “1” and ColumnB = “2” and ColumnC = “3”) or (columnA = “4” and ColumnB = “5” and ColumnC = “6”) or [….998 more conditional […]

如何删除Entity Framework 6中的多对多关系

如果将数据库中的项目连接成多对多关系,我会遇到问题 我的数据库看起来像 | [Project] | | [Job] | ============= ================== ========= | ProjectID | | JobInProjectID | | JobID | | | | ProjectID | | | | | | JobID | | | Project和Job表中的主键也被设置为其他表中的外键但我认为这不是问题,因为当我从Job表中删除项时,它被正确删除,其他表中的所有相关项 所有外键都是通过约束设置的,并且在更新级联上是删除级联 我用来删除工作项的代码 Job job = await db.Jobs.FindAsync(id); db.Entry(job).State = EntityState.Deleted; await db.SaveChangesAsync(); 和项目: Project project = await db.Projects.FindAsync(id); db.Entry(project).State = […]

‘嵌套linq查询中的列名’无效

最后更新 经过大量的测试,我意识到,如果我在SQL 2000和SQL 2005上的相同数据集(在本例中为Northwind)表上运行相同的查询,我会得到两个不同的结果。 在SQL 2000上,我得到了问题中的错误。 在SQL 2005上,它成功了。 所以我得出结论,linqpad生成的查询在sql 2000上不起作用。要重现这一点,请运行: OrderDetails .GroupBy(x=>x.ProductID) .Select(x=>new {product_id = x.Key, max_quantity = x.OrderByDescending(y=>y.UnitPrice).FirstOrDefault().Quantity}).Dump(); 在sql 2000中的Northwind DB上.sql的翻译是: SELECT [t1].[ProductID] AS [product_id], ( SELECT [t3].[Quantity] FROM ( SELECT TOP 1 [t2].[Quantity] FROM [OrderDetails] AS [t2] WHERE [t1].[ProductID] = [t2].[ProductID] ORDER BY [t2].[UnitPrice] DESC ) AS [t3] ) AS [max_quantity] FROM ( […]

Linq选择Item,它在另一个表中等于ID

我不确定这是多么可能,但我有两个表,我想通过表1的值从表2中获取一个值。 表1有一个名为“rank”的外键,它是一个int 。 表2有一个名为“name”的值,它是一个string 。 现在表1的“等级”与表2的“ID”相关。 所以,当我说 var result = db.Table1.Select(x => new { x.name, x.rank }).ToList(); //Bob – 2 我真的想说些什么 var result = db.Table1.Select(x => new { x.name, Table2.rank.Where(ID == x.rank) }).ToList(); //Bob – Gold 我仍然是LINQ的新手,我不知道如何在这样的查询中从其他表中获取rank的字符串值。 编辑 我正在使用的表及其关系值。 用户:ID(PK),s1elo(FK到PastElos),冠军(FK到ChampionList),elo(FK到EloList) PastElo:ID(PK),排名 冠军名单:ID(PK),名称 EloList:ID(PK),Rank 用户和PastElo的工作示例 var result = db.Users.Join(db.PastEloes, x => x.s1elo, y => y.ID, (x, […]