Tag: sql server

解决ASP.NET MVC中的LINQ查询性能问题

加入新表后,我遇到LINQ查询问题。 实际上,它返回我期望的数据,并且在测试中运行得很快。 但是,似乎随着越来越多的用户连接到数据库,查询开始超时。 例如,在生产中的前30或45分钟内一切正常,但是在大约上午8:20,它开始超时。 同样,我认为这是由于整体上数据库的使用增加。 以下是ASP.NET MVC(5)应用程序的一些背景知识,如果有帮助的话。 用户向我们的诊所提交转诊 推荐包含一个或多个订单 如果提供的人员信息与现有人员不匹配,我会做几件事,包括在“订单”表中插入记录(在推荐中选择的每个订单的一个记录)。 如果提供的人员信息与我们系统中的现有人员匹配,那么我将“推荐”保留在队列中,直到通过将其与现有人员匹配或通过覆盖并在系统中创建新人员来手动解决。 此时,在表格中创建在引荐中选择的任何订单。 因此,在这种情况下要考虑的两个主要表是“推荐”(在我的代码中命名为“Referrals”)和“order”(在我的代码中命名为“ReferralPPAs”)表。 到目前为止,我还不需要将有问题的查询从Referrals表链接到ReferralPPAs表(将查询链接到ReferralPPAs表似乎是在数据库/应用程序使用增加时减慢查询的速度)。 此外,如果这有帮助,推荐由外部用户输入,而我从推荐创建的订单在一个单独的应用程序中工作,内部人员作为用户,尽管它们都在同一个数据库中。 ReferralPPAs表可能在一天中的大部分时间都被大量使用。 查询如下所示: IQueryable referrals = (from r in _context.Referrals join cu in _context.ClinicUsers on r.ClinicId equals cu.ClinicId /* Here is the seemingly problematic join */ from ppa in _context.ReferralPPAs .Where(p => p.ref_id == r.seq_no.ToString()) .DefaultIfEmpty() /* End of seemingly problematic […]

使用Entity Framework,我应该在我的存储过程中使用RETURN还是SELECT?

我目前正在尝试使用Entity Framework的存储过程,我遇到了返回类型的问题。 我的存储过程的返回类型是BIT。 这是我的存储过程的代码(简化): CREATE PROCEDURE [dbo].[sp_makeStuff] @id int AS BEGIN DECLARE @status BIT BEGIN TRY BEGIN TRANSACTION DELETE FROM MyTable WHERE Id = @id SET @status = 1 COMMIT END TRY BEGIN CATCH SET @status = 0 ROLLBACK END CATCH RETURN @status END END 我在我的.edmx文件中添加了sp_makeStuff,返回类型为bool?。 然后,我尝试使用下面的代码执行它 using (var ctx = new MyEntities()) { ObjectResult […]

在数据库之间切换,同时使用两个数据库

我有一个使用一个SQL数据库的网站,但托管公司有时非常慢,我得到数据库超时,登录和类似的错误。 我可以实现我的代码同时使用两个数据库吗? 我有存储过程,数据会定期更新。 编辑:简单:当dbDefault关闭并且无法访问时,我需要使用dbSecondary,以便Web应用程序继续运行。 Ant这两个数据库必须始终相同。 编辑:一些错误: 将请求发送到服务器时发生传输级错误。 (提供程序:TCP提供程序,错误:0 – 远程主机强制关闭现有连接。) 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接) 超时已过期。 从池中获取连接之前经过的超时时间。 这可能是因为所有池连接都在使用中并且达到了最大池大小。 无法打开登录请求的数据库“db”。 登录失败。 用户“root”登录失败。

防止在Asp.net中使用ado.net并发执行SQL Server存储过程

我想阻止两个用户同时执行相同的存储过程。 如果两个asp.net请求进入执行该存储过程,那么这些请求应该以串行方式一个接一个地执行。 SQL Server数据库和执行由ado.net处理。 以下任何一种方法都有助于实现这一目标吗? 什么是最合适的方法? 有没有其他方法可以达到同样的目的? 通过将隔离级别设置为Serializable,使用ado.net事务执行存储过程 在存储过程中使用sp_getapplock并在最后释放

如何从SQL数据库中获取数据存储在combobox中 – C#

如何从Comp表中获取company_name的值并将其存储在comboBox中? 这是我从数据库获取值并将其存储在combobox中的初始代码: string Sql = “select company_name from JO.dbo.Comp”; SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(Sql, conn); cmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) comboBox1.Items.Add(ds.Tables[0].Rows[i][0].ToString()); 它指向da.fill(ds)并说”Could not locate entry in sysdatabases for database ‘select company_name from […]

C#将MS Access数据库同步到sql server

我试图在C#中设置一个同步例程,以便将数据从ms访问数据库发送到sql server。 MS Access不是我的选择它只是它的方式。 我能够查询MS Access数据库并获取OleDbDataReader记录集。 我可能会读取每个单独的记录并将其插入到SQL Server中,但它似乎非常浪费。 有一个更好的方法吗。 我知道我可以在MS Access链接到SQL Server并轻松执行更新,但这是为最终用户,我不希望他们搞乱访问。 编辑:只是看看SqlBulkCopy我认为如果我将我的结果导入DataRow []可能是答案

EF Code First:无法连接到SQL Server

我正在尝试使用代码优先方法创建数据库。 当我运行以下代码时,我收到以下exception。 我们怎样才能克服这一点? 笔记: 我的系统上有SQL Server 2008 R2。 我没有使用任何配置文件。 我假设它将使用约定创建数据库 没有开放的连接; 我刚刚重启系统并进行了测试。 仍然是同一个问题。 EntityFramework.dll的运行时版本是v4.0.3xxx 例外 : 提供程序未返回ProviderManifestToken字符串 消息 : 此操作需要连接到“主”数据库。 无法创建与“主”数据库的连接,因为已打开原始数据库连接并且已从连接字符串中删除凭据。 提供未打开的连接。 内在例外 : 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接) 码: using System.Data.Entity; namespace LijosEF { public class Dinner { public int DinnerID { get; set; } public int Title { get; […]

使用LINQ将多个文本框插入到单独行中的sql表中

将文本框的值插入到sql表的单行的特定列中使用LINQ并不是什么大问题,而是如何在新行中插入每个文本框的内容,例如,如果我们有5个文本框,那么它应该创建5个新行在sql表中。 下面是我如何将文本框插入单行的不同列: Table Name: tblModulRelayConfig index fltCe fltUT1 fltUT2 fltUT3 fltUT4 fltUT5 fltUT6 1 75 Text1 Text2 Text3 Text4 Text5 Text6 2 76 Text1 Text2 Text3 Text4 Text5 Text6 using (myDataContext mydc= new myDataContext()) { tblModulRelayConfig tblModuler = (from CE in mydc.tblCEs where CE.fltCE == 75 select CE).FirstOrDefault(); if(tblModuler != null)//in order to update table […]

无法生成SQL Server的用户实例

我有一个本地项目,我试图从ASP:文本框输入数据到数据库。 在建设中我得到以下…… “ 无法生成SQL Server的用户实例。只有集成连接才能生成用户实例。连接将被关闭。 ” 我在这里有点困惑,我已经检查了数据库,并且它正在激活我正在尝试连接的凭据。 这是C#背后的代码 namespace OSQARv0._1 { public partial class new_questionnaire : System.Web.UI.Page { SqlDataAdapter da = new SqlDataAdapter(); SqlConnection sqlcon = new SqlConnection(@”user id=*myuserid*;”+”password=*mypassword*;”+”Data Source=mssql.dev-works.co.uk;User Instance=True;”+”Database=devworks_osqar”+”Trusted_Connection=true;”); protected void Page_Load(object sender, EventArgs e) { } protected void Create_Click(object sender, EventArgs e) { DataBinder ds = new DataBinder(); sqlcon.Open(); SqlCommand sqlcmd = […]

使用ExecuteSqlCommand调用存储过程(期望未提供的参数)

我正在尝试使用context.Database.ExecuteSqlCommand从EF调用存储过程,因为我的一个参数是一个数据表。 以下是程序的参数: ALTER PROCEDURE [mySchema].[myProc] @customerId INT, @indicatorTypeId INT, @indicators [mySchema].[IndicatorList] READONLY, @startDate DATETIME, @endDate DATETIME 这是调用存储过程的c#代码: var indicatorsDt = new DataTable(); indicatorsDt.Columns.Add(“Date”, typeof(DateTime)); indicatorsDt.Columns.Add(“Ongoing”, typeof(int)); indicatorsDt.Columns.Add(“Success”, typeof(int)); indicatorsDt.Columns.Add(“Warning”, typeof(int)); indicatorsDt.Columns.Add(“Error”, typeof(int)); indicatorsDt.Columns.Add(“Other”, typeof(int)); var customerIdParam = new SqlParameter(“customerId”, SqlDbType.Int); customerIdParam.Value = customerId; var typeIdParam = new SqlParameter(“indicatorTypeId”, SqlDbType.Int); typeIdParam.Value = typeId; var startDateParam = […]