Tag: sql server 2008

如何执行行锁?

我想锁定一条记录,然后没有人可以对该记录进行更改。 当我释放锁定时,人们可能会更改记录。 在锁定记录的同时,我想向用户显示记录已被锁定且不允许更改的警告。 我怎样才能做到这一点? 我已经尝试了所有的IsolationLevel级别,但它们都没有我想要的行为。 一些隔离级别会等到锁定释放后再进行更改。 我不希望这样,因为在锁定记录时不允许更新。 如何锁定记录并拒绝所有更改? 我使用SQL Server 2008

通过C#创建存储过程

我正在尝试在我的网络应用程序中创建一个种子数据库,我能够创建数据库,填充表格,我只是坚持让存储过程工作。 这是我到目前为止,但我得到CREATE / ALTER PROCEDURE’必须是查询批次中的第一个语句。\ r \ n’GO’附近的语法不正确。 我也尝试删除GO,并在USE语句和创建过程之间添加\ r \ n,但没有运气。 任何帮助,将不胜感激。 StringBuilder sbSP = new StringBuilder(); sbSP.AppendLine(“USE [” + txtDBName.Text + “]”); sbSP.AppendLine(“GO”); sbSP.AppendLine(“CREATE PROCEDURE [spInsertADAuthorization] @AD_Account varchar(255),@AD_SID varchar(255),@AD_EmailAddress varchar(255),@DateImported datetime,@Active bit AS BEGIN SET NOCOUNT ON; INSERT INTO AD_Authorization (AD_Account, AD_SID, AD_EmailAddress, DateImported, Active) VALUES (@AD_Account,@AD_SID,@AD_EmailAddress,@DateImported,@Active) END”); sbSP.AppendLine(“GO”); using (SqlConnection connection = […]

将数据表传递给存储过程

我有一个用C#创建的数据表。 using (DataTable dt = new DataTable()) { dt.Columns.Add(“MetricId”, typeof(int)); dt.Columns.Add(“Descr”, typeof(string)); dt.Columns.Add(“EntryDE”, typeof(int)); foreach (DataGridViewRow row in dgv.Rows) { dt.Rows.Add(row.Cells[1].Value, row.Cells[2].Value, row.Cells[0].Value); } // TODO: pass dt } 我有一个存储过程 CREATE PROCEDURE [dbo].[Admin_Fill] — Add the parameters for the stored procedure here @MetricId INT, @Descr VARCHAR(100), @EntryDE VARCHAR(20) 我想要的是将数据表传递给这个存储过程,怎么样?

SQL OUTPUT存储过程不与ExecuteReader一起使用

在SQL 2008和C#4.0上使用存储过程时,我无法检索OUTPUT信息并从Select语句返回信息。 我不断得到“对象引用未设置为对象的实例”。 当我执行ExecuteScalar()时,我获取行,但不是数据。 在那里找到了几个例子,它们看起来像我正在做的事情,所以我想我在我面前缺少一些简单的东西。 谢谢。 存储过程 USE [PhoneDb] GO /****** Object: StoredProcedure [dbo].[TestPagingProcedure] Script Date: 06/16/2011 08:39:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[TestPagingProcedure] — Add the parameters for the stored procedure here @startRowIndex int, @maximumRows int, @totalRows int OUTPUT AS BEGIN — SET NOCOUNT ON added to prevent […]

SQL Server连接数的任何限制?

我使用的是SQL Server 2008 Enterprise + C#+ ADO.Net + .Net 3.5。 我正在使用sp_who2或sys.dm_exec_connections来查找活动连接数(如果我找到有效连接数的方法错误,请告诉我)。 对于一些繁重的数据库消费者应用程序,我甚至可以找到活动连接数> 1000。 我想知道SQL Server的活动连接数是否有任何上限限制? 乔治,提前谢谢

如何通过C#代码恢复SQL Server数据库

我尝试像这样恢复数据库: SQL = @”RESTORE DATABASE MyDataBase TO DISK=’d:\MyDATA.BAK'”; Cmd = new SqlCommand(SQL, Conn); Cmd.ExecuteNonQuery(); Cmd.Dispose(); 但我总是得到错误: Msg 3102,Level 16,State 1,Line 7 RESTORE无法处理数据库’MyDataBase’,因为此会话正在使用它。 建议在执行此操作时使用master数据库。 Msg 3013,Level 16,State 1,Line 7 RESTORE DATABASEexception终止。

你应该进行多次插入调用还是传递XML?

我有一个帐户创建过程,基本上当用户注册时,我必须在多个表格中输入用户,个人资料,地址。 User表中有1个条目,Profile中有1个条目,Address表中有2-3个条目。 所以,最多会有5个条目。 我的问题是我应该将这个XML传递给我的存储过程并在那里解析它,还是应该在我的C#代码中创建一个事务对象,保持连接打开并逐个插入地址? 你如何处理这种情况? 即使连接打开,是否可以进行多次调用会降低性能?

无法加载文件或程序集’crystal decisions.windows.forms,version = 13.0.2000.0′

我正在开发Windows应用程序。 在这个我设计的报告模块。 每当我想在Windows 7,Windows XP和Windows Vista中查看报告时,我都会收到错误,但它适用于Windows 8。 我在部署安装程序之前采取了以下步骤 我在Windows 7中的Windows XP和.NET Framework 4.5中安装了.NET Framework 4 我安装了CRforVS_13_0_2但它的错误消息如: 您必须已安装Visual Studio 2010才能继续此安装。 和 由于错误,Visual Studio 2010安装的SAP Crystal Reports版本提前结束。 然后我安装了我的项目设置(手动创建设置,我包括所有水晶报表程序集),登录并转到报表菜单,点击打开Crystal报表的预览通过错误消息如 无法加载文件或程序集’crystal decisions.windows.forms,version = 13.0.2000.0,culture = neutral,Public keytoken = 692fbea5521e1304’或其中一个依赖项。 该系统找不到指定的文件。 请指导我如何解决此问题。

在C#中调用SQL定义的函数

我在TSQL中编写了这个标量函数: create function TCupom (@cupom int) returns float as begin declare @Tcu float; select @Tcu = sum (total) from alteraca2 where pedido = @cupom if (@tcu is null) set @tcu = 0; return @tcu; end 我想在我的C#代码中调用此函数。 这是我到目前为止所拥有的: public void TotalCupom(int cupom) { float SAIDA; SqlDataAdapter da2 = new SqlDataAdapter(); if (conex1.State == ConnectionState.Closed) { conex1.Open(); […]

如何防止在没有主键时使用SqlBulkCopy插入重复记录

我收到一个包含数千条记录的每日XML文件,每条记录都是一个商业交易,我需要将其存储在内部数据库中,以便用于报告和计费。 我的印象是每天的文件只包含唯一的记录,但发现我对unique的定义与提供者的定义并不完全相同。 导入此数据的当前应用程序是C#.Net 3.5控制台应用程序,它使用SqlBulkCopy进入MS SQL Server 2008数据库表,其中列与XML记录的结构完全匹配。 每个记录只有100多个字段,并且数据中没有自然键,或者更确切地说,我可以想出的字段,因为复合键最终也必须允许空值。 目前该表有几个索引,但没有主键。 基本上整行必须是唯一的。 如果一个字段不同,则有效插入。 我看了创建整个行的MD5哈希,将其插入数据库并使用约束来阻止SqlBulkCopy插入行,但我不知道如何将MD5哈希进入BulkCopy操作而我不是确定整个操作是否会失败并在任何一个记录失败时回滚,或者它是否会继续。 该文件包含大量记录,在XML中逐行进行,查询数据库以查找与所有字段匹配的记录,然后决定插入实际上是我能够看到能够执行此操作的唯一方法。 我只是希望不必完全重写应用程序,并且批量复制操作要快得多。 有没有人知道一种方法来使用SqlBulkCopy,同时防止重复行,没有主键? 或者以不同的方式做任何建议吗?