Tag: sql server 2005

事务应该在.NET或SQL Server中处理?

我进入了一个使用.NET / C#作为前端而SQL Server 2008作为后端的应用程序。 我发现ALWAYS事务是在c#代码中处理的。 对于这个项目来说,它似乎是一个不成文的规则,我们不应该在存储过程中使用事务。 我个人觉得应该在存储过程中处理事务,因为它可以更好地控制代码! 在我们不需要打开事务的情况下,我们可能会在脚本中进行大量validation。 我们需要在执行插入/更新/删除之前打开一个事务,并且可以尽快关闭它。 寻找答案,这将有助于我理解处理交易的最佳实践,以及我们何时需要在存储的Proc / C#中选择交易。

通过文本框在sql server 2005中存储数据时获取错误

我通过文本框和按钮在SQL Server 2005中存储数据(大约1500字)。 我正在使用此代码。 protected void Button1_Click(object sender, EventArgs e) { conn.Open(); String query = String.Format(“insert into try (data,sno) values (‘{0}’,22)”,TextBox1.Text); SqlCommand cmd = new SqlCommand(query, conn); cmd.ExecuteNonQuery(); Label1.Text = “submitted”; conn.Close(); } 我有数据类型’char(4000)’列’data’ ‘char(4000)’ 。 问题是,当我存储第1段(约1500字)时,它成功存储。 但是当我存储另一个段落(大约1500字)时,它会显示错误。 “’s’附近的语法不正确。字符串后面的未闭合引号’,22)’。” 问题是什么 ??

是否可以使用linq运行查询来搜索一段时间?

问题详情: SQL Server 2005; entity framework4.0。 我正在尝试使用linq来运行一段时间的查询。 例: 我的服务器中有以下datetime数据: 30/03/2012 12:53:22 30/03/2012 17:23:29 04/04/2012 11:10:14 04/04/2012 19:06:55 我想运行一个查询,它将在时间(12:00和20:00)之间返回所有数据,并且查询必须返回给我以下数据: 30/03/2012 12:53:22 30/03/2012 17:23:29 04/04/2012 19:06:55 或者在(11:00和13:00)之间,查询必须返回给我以下数据: 30/03/2012 12:53:22 04/04/2012 11:10:14 我怎么能用linq做到这一点? 有可能(忽略日期,只使用时间)?

如何在SQL事件探查器中查看SQL查询?

当我发布更新查询或其他更改数据库中的数据的数据操作语言(DML)查询时,使用Entity Framework 4,如何查看发送到SQL Server的查询? 假设我做了类似的事情: someEntityObjectInstance.SomeProperty = newValue; context.SaveChanges(); 在这种情况下,没有ObjectQuery来执行ToTraceString(),所以我无法真正看到幕后发生了什么。 我相信有一些Microsoft SQL Server工具,比如探查器或者可以帮助我查看查询的东西。 另外,我认为VS 2010 Ultimate中的一些Intellitrace会做同样的事情吗? 你有没有可以教我如何使用SQL 2005 Profiler,如果有这样的事情? 更新 我正在查看SQL Server 2005 Profiler中的跟踪,但是当我发出context.DeleteObject()调用或更新对象并调用context.SaveChanges() ,我在Profiler中看不到UPDATE或DELETE查询。 我只看到奇怪的SELECT查询。

C#,sp_executesql和不正确的语法

我正在调用下面的代码。 在线(IDataReader dr = cmd.ExecuteReader()) sql barfs 在’CompanyUpdate’附近的语法不正确。 using (SqlCommand cmd = new SqlCommand(“CompanyUpdate”)) { cmd.Parameters.Add(“@CompanyID”,SqlDbType.Int); cmd.Parameters.Add(“@Description”,SqlDbType.VarChar,50); cmd.Parameters[“@CompanyID”].Value = companyid; cmd.Parameters[“@Description”].Value = description; SqlConnection cn = new SqlConnection(“Data Source=[datasource];Initial Catalog=dotNext;User ID=[user];Password=[password];Pooling=True;Application Name=dotNext”); cn.Open(); cmd.Connection = cn; using (IDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { this.CompanyID = dr.GetInt32(0); } } } 我看了一下sqlprofiler并注意到以下内容: exec sp_executesql N’CompanyUpdate’,N’@CompanyID […]

从select查询返回一个布尔值

我想选择布尔值: SELECT field1, field2, 1 as is_field FROM TABLE 在Visual Studio 2010中我正在做: bool b = row.Field(“is_field”); 但我得到了例外: 指定演员表无效。 如何将布尔值作为boolean而不是作为int ?

C#ASP.Net:在长数据库操作期间出现exception(仅限某些时间)

我们有一个ASP.Net Web应用程序,它使用WCF连接到其业务层。 有时候,我在进行大规模操作时会遇到exception。 有趣的是,当我第一次运行它成功的时候。 之后它会抛出exception。 例外:套接字连接已中止。 操作是它将zipcodes从csv文件上载到数据库表中。 首先,我们从csv文件中读取并创建一个冗长的zipcodes字符串。 这将传递给存储过程并执行数据库操作。 注1 :)当我放置断点并进行测试时,很明显字符串的创建(在从csv获取数据并附加之后)非常快(不到一分钟)。 注2 :)我删除了事务(来自C#代码)并进行了测试,即使那时exception就在那里。 注3 🙂 csv中有一万卢比(十万)记录。 每行有四列(ZipCode,City,County,State)。 csv文件的大小是3MB。 我对事务日志大小有疑问。 然后我使用以下命令收缩日志文件。 DBCC SHRINKFILE(’MyDB_log’,1)GO 然后我使用SELECT [Size],Max_Size,Data_Space_Id,[File_Id],Type_Desc,[Name] FROM FRAMIS_R2075.sys.database_files WHERE data_space_id = 0检查日志大小 大小是128; 最大尺寸为268435456; Type_Desc =“LOG” 即使在缩小之后,exception仍在继续。 框架:.Net 3.0 DB:SQL Server 2005 好吧,当我等待20多分钟时,业务层似乎也有一个消息。 它说,“在调用阅读器时调用Read的无效尝试”。 通过这看,我删除了DbDataReader并使用SqlCommand来更新数据库表。 再次,在业务层出现exception,大约20分钟后说“超时exception”。 知道为什么会这样吗? private void ProcessDatabaseOperationsForZipCode(StringBuilder dataStringToProcess, int UserID) { int CountOfUnchangedZipCode = […]

从c#中的app.config获取ConnectionString

我在app.config文件中定义了我的连接字符串 现在我想把它放到我的C#类中,我已经尝试了所有的方法 。 但我在配置管理器上收到错误。 请帮我。

C#准备语句 – @符号(at / strudel符号)查询

我在C#中准备好一个语句有问题: OdbcCommand cmd = sql.CreateCommand(); cmd.CommandText = “SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?”; cmd.Parameters.Add(“@USER_ID”, OdbcType.VarChar, 250).Value = email; (当然电子邮件包含有效的电子邮件地址,带@符号)。 此代码返回随机错误 – “连接已被禁用”{“ERROR [01000] [Microsoft] [ODBC SQL Server驱动程序] [TCP / IP套接字] ConnectionWrite(send())。错误[08S01] [Microsoft] [ODBC SQL Server驱动程序] [TCP / IP套接字]常规网络错误。请检查您的网络文档。“} 但是,如果我在没有准备好的语句的情况下运行我的代码, cmd.CommandText = “SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ‘”+email+”‘”; 一切都很完美。 也许这与我在参数化值中有@符号的事实有关? 我倾向于认为我不是第一个尝试使用电子邮件地址创建预备声明的人… 我不知道出了什么问题! […]

entity framework和VARBINARY

我正在使用.NETentity framework,我有一个包含varbinary的实体。 有没有一种简单的方法可以在代码隐藏中获取varbinary的大小,从数据库中检索出来之后呢? 我想可能有一些方法可以直接从实体获取大小,比如entity.Context.Size – 还是需要以不同的方式处理它?