Tag: sql server 2008

将操作数作为sql参数传递

我目前正在开发一个以sql server 2008作为后端的asp.net应用程序。 我想让用户能够在SQL语句中指定他们想要过滤的内容。 在界面上,我给他们选择以下选项作为下拉列表:等于大于小于等 我想将此作为参数传递给要执行的sql查询。 我怎样才能做到最好? 例如; Select amount, deduction, month from loan where amount @operant 10000; @operand是上述下拉列表的返回值,即= = @operand = =

System.Data.SqlClient.SqlException:超时已过期

几天前我注意到我的Web应用程序给了我一个exception超时的sql过期。 我清理了几个存储过程,需要更多的CPU并重新启动SQL Server服务,我的应用程序开始工作,因为它是在快速和没有任何延迟之前。 三四个小时后我再次检查它,我无法加载页面,而不是它给我的exception超时到期。 我检查了服务器CPU是好的一切看起来很好。 我在同一个IIS 7下有一些其他网站,它们运行良好,没有任何例外。 我再次重新启动SQL Server服务,我的应用程序再次恢复正常。 我认为它看起来像SQL服务器数据库上的问题,但我不知道如何解决它。 因此,每当我遇到exception时,我只是重启sql服务,但当然这不是最好的方法。 请帮我解决这个问题。 这是我得到的一个例外。 消息:抛出了类型’System.Web.HttpUnhandledException’的exception。 来源:System.Web内部exception:System.Data.UpdateException:更新条目时发生错误。 有关详细信息,请参阅InnerException。 —> System.Data.SqlClient.SqlException:超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 该语句已终止。 在系统上的System.Data.SqlClient.SqlInternalConnection.OnError(SqlExceptionexception,布尔breakConnection)中的System.Data.SqlClient.SqlConnection.OnError(SqlExceptionexception,布尔breakConnection)处于System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) System.Data.SqlClient上的System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)中的.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) System.Data.SqlClient上的System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,DbAsyncResult结果)中的.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async)。 SqlCommand.InternalExecuteNonQuery(DbAsyncResult结果,Str 在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()处的SystemName,Boolean sendToPipe)处于System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator,EntityConnection connection,Dictionary 2 identifierValues, List 1 generatedValues)。 Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)—内部exception堆栈跟踪结束—在System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)处于System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)处的System.Data.Objects.ObjectContext.SaveChanges(Boolean […]

具有相同列的相同表的数据建模

我有许多表具有相同数量的列和名称,因为它们都是查找表。 例如,有LabelType和TaskType表。 LabelType和TaskType表具有TypeID和TypeName列。 它们将在其他表中用作外键,例如带有shippingLog表的LabelType表和带有EmployeeTask表的TaskType表。 LabelType Table TypeID TypeName 1 Fedex 2 UPS 3 USPS TaskType Table TypeID TypeName 1 Receiving 2 Pickup 3 Shipping 到目前为止,我有20多个表格,我预计它会继续增加。 我没有问题,但我只是想知道是否有更好或更聪明的方式使用表格。 我甚至考虑将所有这些表合并为一个查找类型表,并通过从查找表中添加外键来区分它们。 查找表可能包含Label,Task等数据。然后,我只需要一个或两个表来查找所有这些查找数据。 如果您有更好或更智能的数据建模方法,请告诉我。

无法在SQL Server 2008中创建序列

我尝试使用以下查询在SQL Server 2008中创建序列, CREATE SEQUENCE serial START 100 我得到以下语法错误, Msg 102,Level 15,State 1,Line 1 ‘SEQUENCE’附近的语法不正确。 如何在SQL Server 2008中创建序列?

将varchar数据类型转换为日期时间数据类型会导致超出范围的值错误

将varchar数据类型转换为日期时间数据类型会导致超出范围的值错误 我正在尝试使用表单将数据输入到我的表中,表单validation和sql服务器中的日期格式都是dd / mm / yy,但是当我尝试从表单提交数据时,日期高于12 (例如13/12/2012)它抛出一个exception,其原因是“将varchar数据类型转换为日期时间数据类型导致超出范围的值错误”,如果我尝试在表单中输入数据以mm / dd / yy格式表示“错误的日期格式”,这意味着dd / mm / yy格式是正确的格式 这是我的表格的代码如下: private void btnAddProject_Click(object sender, EventArgs e) { DateTime startDate; DateTime endDate; if (txtProjectName.Text == “”) //client side validation { MessageBox.Show(“Enter Project Name”); return; } try { startDate = DateTime.Parse(txtProjectStart.Text); endDate = DateTime.Parse(txtProjectEnd.Text); } catch (Exception) { MessageBox.Show(“Wrong Date Format”); […]

将数据表从C#传递到SQL Server 2008

如何将DataTable从C#传递到SQL Server 2008? 例外 : 表类型参数’@CurrentTableInitial’必须具有有效的类型名称。 表结构: CREATE TABLE [dbo].[RegisterChoiceUserInitial]( [RegisterChoiceUserInitialID] [int] IDENTITY(1,1) NOT NULL, [UserId] [uniqueidentifier] NOT NULL, [RegisterChoiceUserInitialJob] [nvarchar](50) NULL, [RegisterChoiceUserInitialOrganization] [nvarchar](50) NULL, [RegisterChoiceUserInitialUnit] [nvarchar](50) NULL, [RegisterChoiceUserInitialMembershipType] [nvarchar](50) NULL, [RegisterChoiceUserInitialStart] [nvarchar](10) NULL, [RegisterChoiceUserInitialEnd] [nvarchar](10) NULL, CONSTRAINT [PK_RegisterChoiceUserInitial] PRIMARY KEY CLUSTERED ( [RegisterChoiceUserInitialID] ASC ) 用户定义的类型: CREATE TYPE [dbo].[TableTypeInitial] AS TABLE( [ID] [int] NULL, […]

从SQL Server中检索varbinary(MAX)到C#中的byte

我正在尝试从SQL Server获取varbinary(MAX)到C#中的byte[]变量。 我怎样才能做到这一点? 谢谢

错误 – SqlDateTime溢出。 必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间

我有一个为2008年写的应用程序。 我们正在使用linq实体。 我们现在必须将数据库切换到2005.我在linq SELECT查询中收到以下错误: 错误 – SqlDateTime溢出。 必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。 违规行是: DateOfBirth = ((s.Date_Of_Birth == null) || (s.Date_Of_Birth <= lowdate)) ? DateTime.MinValue : s.Date_Of_Birth.Value, DateOfBirth是DateTime类型,是我们自己的业务对象(非实体)中的属性。 任何人都知道如何修改此行以使此查询运行?

更新并插入创建死锁的查询

我将尽可能详细地解释我的问题,我将不胜感激任何帮助/建议。 我的问题是由两个查询(一次插入和一次更新)引起的死锁。 我正在使用MS-SQL server 2008 我有两个使用相同数据库的应用程序: Web应用程序(在每个请求上通过调用存储过程在Impressions表中插入多个记录) Windows服务(计算前一分钟在一分钟,每分钟内完成的所有展示次数,并在通过存储过程计算的每个展示次数上设置一个标记) Web应用程序在不使用事务的情况下插入展示记录,而Windows服务应用程序在使用IsolationLevel.ReadUncommitted事务时计算展示次数。 Windows服务应用程序中的存储过程执行如下操作: Windows服务存储过程: 循环通过将isCalculated标志设置为false并且日期<@now的所有展示,增加连接到展示表的另一个表中的计数器和其他数据,并在具有日期<@now的展示中将isCalculated标志设置为true。 因为这个存储过程非常大,没有必要粘贴它,这里是proc的缩短代码片段: DECLARE @nowTime datetime = convert(datetime, @now, 21) DECLARE dailyCursor CURSOR FOR SELECT Daily.dailyId, Daily.spentDaily, Daily.impressionsCountCache , SUM(Impressions.amountCharged) as sumCharged, COUNT(Impressions.impressionId) as countImpressions FROM Daily INNER JOIN Impressions on Impressions.dailyId = Daily.dailyId WHERE Impressions.isCharged=0 AND Impressions.showTime < @nowTime AND Daily.isActive = 1 GROUP […]

加快SQL Server 2008中185k行的更新速度?

我有一个大约185k行的二进制文件。 C#在几秒钟内解析文件。 用这些数据更新MSSQL表的最佳方法是什么? 我尝试过的: 最简单的方法 – 读取二进制行,解析,更新表。 整个过程大约需要2天才能更新所有数据。 合并200个更新查询并立即将它们发送到MSSQL。 在这种情况下,更新需要8到10小时。 将500多个查询合并为单个查询。 工作得更快,但不时会丢弃超时exception,因此有些更新不会通过。 有关如何加快更新过程的任何建议?