Tag: sql

使用TransactionScope需要新的缺点

我想了解在EntityFramework ( w / Sql Server 2008 )上使用TransactionScopeOption.RequiresNew /缺点是什么,我们不应该总是使用RequiresNew的原因是什么。 问候。

Parallel.Foreach SQL查询有时会导致Connection

我需要加快在我的应用程序中执行12个查询。 我从常规foreach切换到Parallel.ForEach。 但有时我会收到错误消息“ExecuteReader需要一个开放且可用的连接。连接的当前状态正在连接。” 我的理解是,由于12个查询中的许多查询都使用相同的InitialCatalog,因此12中没有真正的新连接,这可能是问题所在? 我怎样才能解决这个问题? “sql”是类型“Sql”的列表 – 类只是字符串名称,字符串连接和查询列表。 这是代码: /// /// Connects to SQL, performs all queries and stores results in a list of DataTables /// /// List of data tables for each query in the config file public List GetAllData() { Stopwatch sw = new Stopwatch(); sw.Start(); List data = new List(); List sql=new […]

为什么数据库查询在应用程序中只会变慢?

我有一个网页,需要10分钟来对数据库运行一个查询,但从SQL Server Management Studio运行时,相同的查询返回不到一秒钟。 该网页只是在正在执行存储过程的数据库中触发SQL,而后者又在四个表上执行非常简单的选择。 代码再次是基本的ADO,在SqlCommand上设置CommandText,然后执行ExecuteReader来获取数据。 网页通常可以很快地运行,但是当它减慢时,加速它的唯一方法是对正在查询的表上的索引进行碎片整理(不同的时间不同),这在执行相同查询时似乎没有意义快速手动。 我已经看过这个问题,但它不适用,因为网页实际上只是在数据库中激活文本。 有没有人有任何好的想法为什么这种方式变慢而不是另一种方式? 谢谢

记录用户登录以报告客户端超过许可证数量

我是商业Windows应用程序(c#)的首席开发人员。 新要求是跟踪滥用许可证的客户。 例如:假设客户购买了10个用户许可协议,即在任何给定时间内同时使用10个用户。 我需要能够报告,回顾历史,客户有超过10个用户同时登录的所有时间。 我已经有一个包含列的User表:userid(主键),pw,lastLogin,lastLogout。 我正在考虑创建一个新的“日志记录”表,每次用户注销时都会添加一个新行…列可能包括: LogId,UserId,LoginDateTime,LogoutDateTime …然后我会有一个用户每次登录/退出应用程序的历史… 但是我不确定这个表格设计是否会为报告提供有效的计算…我是否使用SQL或c#来执行计算对我来说无关紧要,只要它相当快…… 希望有人可能对如何更好地设计此表有一个好主意,以便我可以快速计算客户超出许可限制时的任何/所有时间点。 注意:我不想阻止11t,12th等用户使用该应用程序……要求是向用户显示警告消息,但允许他继续工作……

如何将sql union转换为linq

我有一个使用union的以下Transact SQL查询。 我需要一些关于如何在LINQ中看起来的指针,即一些例子会很好或者如果有人可以在linq中推荐一个关于UNIONS的好教程。 select top 10 Barcode, sum(ItemDiscountUnion.AmountTaken) from (SELECT d.Barcode,SUM(AmountTaken) AmountTaken FROM [Aggregation].[dbo].[DiscountPromotion] d GROUP BY d.Barcode UNION ALL SELECT i.Barcode,SUM(AmountTaken) AmountTaken FROM [Aggregation].[dbo].ItemSaleTransaction i group by i.Barcode) ItemDiscountUnion group by Barcode 请注意,原始SQL正在合并 2个选择NOT连接它们。 我需要知道如何合并结果,即删除重复项,并根据条形码对存在重复的行数值求和。

在.net / sql server中处理bc日期的最佳方法是什么?

我打算创建一个时间线应用程序来存储和显示特定日期的信息。 例如:亚里士多德公元前384年 – 公元前322年; 还有伊曼纽尔康德的广告日期22.04.1724 – 12.02.1804)。 我想使用sql compact edition数据库。 日期时间格式允许日期为1/1/1753 12:00:00:00 AM至12/31/9999 11:59:59 PM。 所以我不能使用原生日期时间格式。 .Net也不允许使用本机DateTime类的bc日期(0001.01.01是第一天)。 我是否必须使用varchar列定义自己的格式,并在.Net中解析这些值?

Oracle Sequence nextval是来回跳转的数字

我创建了一个新表和一个新序列,我有两个C#Web服务尝试使用mySequence.nextval使用相同的查询将记录插入此表(是的,我检查了很多次,它们都使用mySequence.nextval )。 两个Web服务正在向表中插入行,但mySequence.nextval不按顺序返回数字 以下是创建记录的方式,显示了从mySequence.nextval获取其值的PrimaryKey 1 21 22 23 2 3 24 25 4 27 28 5 到目前为止没有重复,但为什么mySequence.nextval来回跳跃? 我应该担心吗 更新:使用cache_size = 20创建序列

C#关闭阅读器时无效尝试调用Read

当我在C#语言中进行3层项目时,我无法尝试在读取器关闭时调用Read错误。 我想要做的是通过将两个表连接在一起并在下拉列表中显示来检索地址数据列。 这是我的数据访问层: public List getDistributionAll() { List distributionAll = new List(); string address; SqlDataReader dr = FoodBankDB.executeReader(“SELECT b.addressLineOne FROM dbo.Beneficiaries b INNER JOIN dbo.Distributions d ON d.beneficiary = b.id”); while (dr.Read()) { address = dr[“addressLineOne”].ToString(); distributionAll.Add(new Distribution(address)); } return distributionAll; } 这是我的FoodBankDB类: public class FoodBankDB { public static string connectionString = Properties.Settings.Default.connectionString; public static […]

从服务器C#上的特定数据库中检索表的列表

寻找一些可以从服务器上的特定数据库中检索表名的C#示例。 我已经有了一个有效的连接字符串,只是寻找将每个表的名称添加到List中以便以后检索和操作的正确方法。

我如何遍历OracleDataReader的所有列

我有以下代码,我想循环遍历此查询结果中的所有字段,并填充称为字段的字典。 鉴于datareader这可能吗? OracleCommand command = connection.CreateCommand(); string sql = “Select * from MYTABLE where ID = ” + id; command.CommandText = sql; Dictionary fields = new Dictionary(); OracleDataReader reader = command.ExecuteReader();