Tag: sql server

使用ado.net通过C#将值插入SQL Server数据库

我创建了一个简单的程序来将值插入表[regist] ,但我一直收到错误 ‘)附近的语法不正确 on cmd.ExecuteNonQuery(); : private void button1_Click(object sender, EventArgs e) { SqlConnection cn = new SqlConnection(“Data Source=DELL-PC;initial catalog=AdventureWorks2008R2 ; User ID=sa;Password=sqlpass;Integrated Security=SSPI;”); SqlCommand cmd = new SqlCommand(“INSERT INTO dbo.regist (” + ” FirstName, Lastname, Username, Password, Age, Gender,Contact, ” + “) VALUES (” + ” @textBox1.Text, @textBox2.Text, @textBox3.Text, @textBox4.Text, @comboBox1.Text,@comboBox2.Text,@textBox7.Text” + “)”, cn); […]

SQL CLR中的multithreading缓存

是否有任何multithreading缓存机制可以在SQL CLR函数中工作,而不需要将程序集注册为“不安全”? 正如本文所述,只需使用lock语句就会在安全程序集上引发exception: System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host. The protected resources (only available with full trust) were: All The demanded resources were: Synchronization, ExternalThreading 我希望对函数的任何调用都以线程安全的方式使用相同的内部缓存,以便许多操作可以同时执行缓存读取和写入。 本质上 – 我需要一个可以在SQLCLR“安全”程序集中使用的ConcurrentDictionary 。 不幸的是,使用ConcurrentDictionary本身会产生与上面相同的exception。 是否有内置的SQLCLR或SQL Server来处理这个问题? 或者我误解了SQLCLR的线程模型? 我已经阅读了关于SQLCLR的安全限制的内容。 特别是,以下文章可能有助于理解我在说什么: SQL Server CLR集成第1部分:安全性 使用CLR和T-SQL部署/使用需要不安全/外部访问的程序集 此代码最终将成为分发给其他人的库的一部分,因此我真的不希望将其作为“不安全”运行。 我正在考虑的一个选项(由Spender在下面的评论中提出)是从SQLCLR代码中扩展到tempdb并将其用作缓存。 但我不太清楚到底该怎么做。 我也不确定它是否会像内存缓存一样高效。 请参阅下面的更新 我对可能提供的任何其他替代方案感兴趣。 谢谢。 例 […]

为什么重用DataContext会对性能产生负面影响?

经过大量 研究和一些错误后 ,我修改了我的代码,以便每次查询数据库或插入数据时都会创建一个新的DataContext。 并且经常查询数据库 – 对于处理的250k个事务中的每一个,在插入事务之前,将查询数据库以获取客户ID,部门ID和类别。 所以现在我正在尝试优化代码,因为它每秒只处理大约15个事务。 我删除了一些无关的查询并添加了一些索引,并将其提高到30 /秒。 然后我想,尽管每个人都说DataContext是轻量级的,但是每个事务需要花费4倍的时间来创建一个新的,所以我尝试重用DataContext。 我发现,令我惊讶的是,重复使用上下文会导致性能降低到每秒10个事务! 为什么会这样呢? 是因为DataContext将实体缓存在内存中,并在查询数据库之前首先搜索其内存列表? 因此,例如,如果我正在寻找名为“MCS”的客户的客户ID(主键),并且客户名称列上有聚簇索引,以便数据库查询速度快,则内存中查找会慢吗? 创建/部署如此多的数据库连接是否会降低速度,或者这只是另一种过早的优化? 如果确实如此,是否有办法重用DataContext但是它为每个linq-to-sql查询执行实际的数据库查询?

将C#类直接序列化到SQL服务器?

任何人都可以建议将数据(实际上是一个类)序列化到数据库的最佳方法吗? 我正在使用SQL Server 2008,但我认为我需要在存储到数据库之前将类序列化为字符串/或其他数据类型? 我认为这个字段需要是文本还是二进制? SQL Server 2008(或.net 3.5)是否支持直接对数据库进行序列化? 任何帮助真的很感激

在网站上创建“你是不是指XYZ”function的想法

我想让用户能够搜索大量的商家列表,但仍然可以找到近乎匹配的内容。 当你没有针对简单的词典单词,而是像ABC商业名称这样的复杂名称时,有没有人有关于如何最好地解决这个问题的建议? 问候。

在生产中使用LocalDb是正常的吗?

我知道使用LocalDb非常好并且易​​于开发,我想知道在IIS服务器上托管网站时是否在生产中使用它是个好主意? 我问,因为我想知道它是否会在生产中出现任何速度问题。 这是我想在生产中使用的连接字符串 Server=(LocalDB)\\v11.0;Integrated Security=SSPI;MultipleActiveResultSets=true; AttachDBFilename=|DataDirectory|ProjectDB.mdf;

如何使用SqlCacheDependency?

我需要为依赖于此查询的表实现SqlCacheDependency: SELECT Nickname FROM dbo.[User] 。 我为此创建了一个方法: private IEnumerable GetNicknamesFromCache() { const String cacheValueName = “Nicknames”; var result = HttpRuntime.Cache.Get(cacheValueName) as List; if (result == null) { result = _repository.GetAllNicknames(); var connectionString = ConfigurationManager.ConnectionStrings[“RepositoryContext”].ConnectionString; var sqlConnection = new SqlConnection(connectionString); var sqlCommand = new SqlCommand(“SELECT Nickname FROM dbo.[User]”, sqlConnection); var sqlDependency = new SqlCacheDependency(sqlCommand); HttpRuntime.Cache.Insert(cacheValueName, result, […]

如何从C#代码进入SQL Server存储过程?

我正在调试一些使用Ado.net在SQL Server中调用存储过程(TSQL)的C#代码。 我怎样才能进入存储过程? (我想我已经看到这个由微软工作人员演示,但是不能回想起让它工作所需的101个“神奇”设置。)

SqlDataReader – 如何将当前行转换为字典

有没有一种简单的方法将SqlDataReader的当前行的所有列转换为字典? using (SqlDataReader opReader = command.ExecuteReader()) { // Convert the current row to a dictionary } 谢谢

ADO .NET与SQL Server Management Studio – ADO表现更差

我在ADO.NET C#和Sql Server Management工作室中运行相同的命令。 通过C#运行的SQL执行得更糟 – 内存使用情况更糟(耗尽所有可用内存),从而导致数据库执行时间增加。 管理工作室并不完美(它也会导致sql server耗尽内存),但它并不像通过ADO.NET那么糟糕。 我正在运行:Windows 7,Sql Server 2008 R2,10.50.1600。 C#.NET 3.5。 Sql Server管理Studio 2008 R2。 所有程序和数据库都在我的本地开发机器上。 我正在运行的SQL是40个创建视图,40个在2个数据库上创建唯一索引。 我需要动态执行此操作,因为我们正在运行两个数据库之间的数据库比较(出于不相关的原因,我们需要比较视图而不是表格)。 由于性能是一个问题,我们不能一直留下视图和索引。 SQL看起来像这样: create view [dbo].[view_datacompare_2011106] with schemabinding as ( SELECT t.[ID], t.[Column1], t.[Column2], t.[Column3], FROM dbo.Table t WHERE t.[ID] in (‘1′,’2′,’3′,’4’) ) go create unique clustered index [index_datacompare_2011106] on [dbo].[view_datacompare_2011106] (ID) go […]