Tag: sql server 2008 r2

如何处理TransactionInDoubtException

我有一些简单的SELECT语句和一个包含在using(TransactionScope…)块中的INSERT 。 更新:隔离级别为ReadCommited 我在调用scope.Complete()遇到以下exception。(见下文) 同时数据库完全由另一个应用程序引起高负载。 事实上我发现INSERT语句确实执行了。 我的问题是:如何以一种使数据库保持一致状态的方式处理此exception? 我正在寻找一个总是完成或未完成但从未完成一半的交易。 exception堆栈跟踪: System.Transactions.TransactionInDoubtException: The transaction is in doubt. —> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() […]

如何保持sql依赖性的目的

我有一个控制台应用程序。 我想继续关注数据库表中特定列的更改。 我通过互联网阅读,我发现sql依赖有利于我的目的。 我开始学习它,我做了以下事情: 创建一个类。 在构造函数中,我调用了静态函数start并调用了一个具有所有sql依赖项设置的函数。 我的问题 当我使用start点击visual studio 2013运行应用程序时,应用程序工作然后停止。 但是 ,我需要的是应用程序开始工作并继续关注数据库表中的更改。 请问你能帮帮我吗? 码: 这是一个非常简单的c#代码。 public class MyListener { public MyListener() { SqlDependency.Start(getConnectionString()); this.listen(); } private string getConnectionString() { return ConfigurationManager.ConnectionStrings[“popup”].ConnectionString.ToString(); } private void listen() { string query = “SELECT CallerID FROM TransferToSIP WHERE hasBeenRead = 0”; SqlConnection con = new SqlConnection(getConnectionString()); SqlCommand cmd = […]

如何侦听SQL Server数据库更改

使用.Net 4.0和SQL Server 2008 R2 我一直在研究利用SqlDependency / SqlNotifications来监控一些数据库结构。 对SQL Server服务代理使用SqlDependency / SqlNotifications是最好的过程/实践吗? 人们是否使用其他方法来完成类似的任务? 我总是可以轮询变化,但我宁愿不必那样做。 另一方面,我也不想在我们现有的环境中引入复杂的场景。 编辑(潜在选项): 的SqlDependency Service Broker外部激活

每隔06:30 SQL Server查询计数值

请帮我。 我的数据和查询有问题。 请先看看我的桌面设计。 CREATE TABLE [dbo].[my_table]( [ID] [int] NOT NULL, [date] [datetime] NULL, [value] [int] NULL, [product_code] [varchar](50) NULL, [expectedvalue] [int] NULL, CONSTRAINT [PK_my_table] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO 这是数据,所有数据都是在每分钟从机器获得的。 数据场景1(06:30的值不为0): INSERT […]

在按钮单击时从另一个表单刷新DataGridView

我想在将新成员插入数据库后刷新DataGridView。 我在主窗体上创建了一个方法,该方法发生在mainform_load上。 从另一种forms(addmember),在我点击SaveMemberButton后,我正在调用该方法来刷新datagridview,但它不会发生。 这是我在主窗体上的代码: private void MainForm_Load(object sender, EventArgs e) { //ShowLoginForm(); ListMembers(); } public void ListMembers() { MembersDataGridView.Columns.Clear(); MembersDataGridView.DataSource = Connection.ListMembers(); MembersDataGridView.ClearSelection(); } 这是我在另一种forms上的代码: private MainForm mainForm = new MainForm(); private void SaveMemberButton_Click(object sender, EventArgs e) { try { if (IsValid()) { var member = new Member { Name = AddNewNameTextBox.Text, Surname = AddNewSurnameTextBox.Text, […]

如何注册CLR用户定义函数以用于linq查询?

使用SQL Server 2008我想在比较之前对DB值运行正则表达式。 我正在研究CLR用户定义函数(我调查了EDM函数,但我得到的印象是UDF更适合正则表达式 – 如果我错了请纠正我)。 理想情况下,我想像这样做一个linq调用: var results= db.Items.Where(i => i.CustomFormatFunction() == xyz); 到目前为止,我有这个c#代码: public static partial class UserDefinedFunctions { [SqlFunction] public static SqlString CustomFormatFunction(string str) { return Regex.Replace(Regex.Replace(HttpUtility.HtmlDecode(str), @”\s+”, “-“), “[^a-zA-Z0-9/-]+”, “”).ToLower(); } } 为了使我能够在linq查询中使用它,还需要哪些步骤?

如何使用C#测试SSAS中与数据源的连接

我在远程服务器上的Analysis Services中有一个数据库。 它包含位于另一个远程服务器上的另一个数据库的数据源。 我正在尝试使用C#编写连接测试,它将检查两个数据库之间的数据库连接。 我无法使用ADOMD.NET执行此操作。 我目前正在考虑使用SMO来做到这一点,但到目前为止我还没有运气。 我非常感谢任何建议或意见。 更新: 经过进一步研究,我提出了以下测试(请注意,我打算稍后添加更多try..catch块和断言)。 此外,它使用C:\ Program Files \ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.AnalysisServices.DLL来访问Server,Database和DataSource类。 class ConnectivityTests { // Variables String serverName = “”; String databaseName = “”; String dataSourceName = “”; [Test] public void TestDataSourceConnection() { // Creates an instance of the Server Server server […]

entity framework4.3.1无法创建(/打开)数据库

我曾经在一个MVC 3项目中使用过EF 4.1( Code First ),这很好。 今天我尝试在WinForms项目中使用EF 4.3.1( Code First )并遇到一些真正的巫术:(我正在研究的原始项目是WinForms,但是对于附加的控制台应用程序代码也是如此。) 当尝试在数据库中输入一个简单的类时,我得到以下exception: 无法打开登录请求的数据库“Test”。 登录失败。 用户'[ComputerName] \ [Administrator]’登录失败。 我已经尝试检查SQL Server(2008 R2)配置,但我的用户确实拥有服务器上的所有权限。 注意:首次运行应用程序时, 数据库不存在。 即使以下示例代码也不起作用: class Program { public static void Main() { var person = new Person { Name = “Nathan” }; using (var db = new MyContext()) { //#1 db.Persons.Add(person); db.SaveChanges(); } Console.Write(“Person saved !”); […]

如何通过C#确定SQL Server数据库用户的有效权限?

当我说有效权限时,我指的是当您进入SQL Server Management Studio中的数据库属性时列出的权限,单击“权限”,然后单击“有效”选项卡。 到目前为止,我已经能够使用以下代码确定显式权限: using Microsoft.SqlServer.Management.Smo; … DatabasePermissionInfo[] permissions = database.EnumDatabasePermissions(“username”); 但是,我仍然需要获得有效的权限。 在这种情况下,我为用户添加了一个登录名,并通过用户映射为数据库赋予了db_datareader和db_datawriter的角色。 在数据库的权限中,列出的有效权限是CONNECT, DELETE, INSERT, SELECT,和UPDATE ,但仅显式权限列表连接(这是上述代码唯一回退的内容)。 那么还有一种以编程方式检索有效权限的方法吗? 谢谢。

SQL Server 2008 R2的C#CLR中的newtonsoft.json解析器 – 如何部署?

我创建了一个使用newtonsoft json parser.的CLR newtonsoft json parser. 我需要部署CLR 。 我为解析器依赖创建了一个程序集: CREATE ASSEMBLY [Newtonsoft.Json] FROM ‘C:\share\Release\Newtonsoft.Json.dll’ WITH PERMISSION_SET = UNSAFE 上面的语句抛出一个错误: `Assembly ‘Newtonsoft.Json’ references assembly ‘system.runtime.serialization, version=3.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.’, which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, […]