Tag: sql server 2005

HRESULT:0x8004D00E使用TransactionScope – C#

当我尝试在连接到SQL Server 2000的Windows Server 2003 Standard Edition SP1计算机上运行C#WinForms应用程序时,我收到以下错误,转换WinForms应用程序中的数据并将转换后的数据插入到SQL Server 2005应用程序中。 我使用SSPI连接到每个数据库。 代码包含在TransactionScope块中: System.TimeSpan TransactionTimeOut = new TimeSpan(0, 40, 0); using(TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew, TransactionTimeOut)) { try { //meat of transaction… } catch(Exception ex) { throw ex; } Scope.Complete(); } 错误消息: 例外:事务已被隐式或显式提交或中止。 内部exception:事务已被隐式或显式提交或中止(HRESULTexception:0x8004D00E) 任何人都知道可能导致此问题的原因是什么?

如何使用Microsoft.SqlServer.Management.Smo命名空间的还原类进行还原

public void RestoreDatabase(String databaseName, String filePath, String serverName, String userName, String password, String dataFilePath, String logFilePath) { Restore sqlRestore = new Restore(); BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File); sqlRestore.Devices.Add(deviceItem); sqlRestore.Database = databaseName; ServerConnection connection = new ServerConnection(serverName, userName, password); Server sqlServer = new Server(connection); Database db = sqlServer.Databases[databaseName]; sqlRestore.Action = RestoreActionType.Database; String dataFileLocation = dataFilePath; […]

获取刚刚插入的记录的ID?

我正在处理用户从gridview中选择的项目,并执行电子邮件和数据库插入操作。 当用户选择按钮时,下面的代码从gridview获取信息,在Order表中创建新订单,并在Transactions表中创建新条目。 如果我使用这种插入记录的方法,如何获取最后插入的ID? 你会推荐一种解决这个简单问题的方法吗? protected void btnOrder_Click(object sender, EventArgs e) { double Total = 0; string MailFrom = “webadmin@domain.com”; string MailTo = “purchasing@domain.com”; string MailSubject = “Online Order”; string MailCC = “”; string MailBCC = “”; string MailReplyTo = “”; string MailBody = “”; TextBox ItmCostCode = (TextBox)form1.FindControl(“txtCostCode”); foreach (GridViewRow gvr in GridView1.Rows) { CheckBox […]

在失败的ALTER TABLE … ADD CONSTRAINT上将事务回滚到保存点

有没有办法在事务中添加检查约束,如果失败回滚到以前的保存点(而不是回滚整个事务)? 在我的情况下,当ALTER TABLE … ADD CONSTRAINT命令失败时,事务无法回滚到保存点(尝试这样做会抛出InvalidOperationException)。 概述以certificate关键点: SqlTransaction transaction = connection.BeginTransaction(); // … execute SQL commands on the transaction … // Create savepoint transaction.Save(“mySavepoint”); try { // This will fail… SqlCommand boom = new SqlCommand( “ALTER TABLE table WITH CHECK ADD CONSTRAINT …”, connection, transaction); boom.ExecuteNonQuery(); } catch { // …and should be rolled back […]

使用Entity Framework加入视图时使用.Include()

我使用索引视图,这是一个没有任何关系的实体(与我的表实体的关系将是更好的,但这似乎几乎不可能实现)。 这个视图由4个FK组成,它们共同形成PK: PortalID CategoryID BranchID CompanyID 现在我加入这个视图来选择一组像这样的公司: var companies = (from c in database.Companies.FindAll().Include(“City”) join l in database.CompanyList.FindAll() on c.ID equals l.CompanyID where l.PortalID == 9 && l.BranchID == 1597 select c).Take(10); 实体公司与表格(城市ID,城市)有关联,我希望包含并完美地运作。 但是,当我加入视图时,.Include()被完全忽略,从而导致查询没有连接到cities表。 正如您可能已经使用存储库模式得出结论而FindAll()返回IQueryable并且我已经手动将Include扩展添加到IQueryable,如下所示: public static IQueryable Include(this IQueryable sequence, string path) { var objectQuery = sequence as ObjectQuery; if (objectQuery != null) return […]

从C#应用程序执行SSIS任务

我可以从我的C#App成功运行SSIS包。 有没有办法在.NET(C#)应用程序中运行SSIS包中的特定任务?

NHibernate – 将长字符串设置为查询参数

我正在构建一个这样的查询: private void Test() { ISession session = sessionFactory.OpenSession(); var query = session.GetNamedQuery(“testQuery”); string s = BuildVeryLongString(); // length more that 4000 chracters query.SetParameter(“Param”, s, NHibernateUtil.String); query .SetResultTransformer(new AliasToBeanResultTransformer(type)) .List(); } 在DB-profiler中,我可以看到Param的类型是nvarchar(4000)是不够的。 有没有办法说NHibernate,我将使用更长的字符串? PS DB是MSSQL 2005。 提前致谢!

在数据库之间切换,同时使用两个数据库

我有一个使用一个SQL数据库的网站,但托管公司有时非常慢,我得到数据库超时,登录和类似的错误。 我可以实现我的代码同时使用两个数据库吗? 我有存储过程,数据会定期更新。 编辑:简单:当dbDefault关闭并且无法访问时,我需要使用dbSecondary,以便Web应用程序继续运行。 Ant这两个数据库必须始终相同。 编辑:一些错误: 将请求发送到服务器时发生传输级错误。 (提供程序:TCP提供程序,错误:0 – 远程主机强制关闭现有连接。) 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 – 无法打开与SQL Server的连接) 超时已过期。 从池中获取连接之前经过的超时时间。 这可能是因为所有池连接都在使用中并且达到了最大池大小。 无法打开登录请求的数据库“db”。 登录失败。 用户“root”登录失败。

如何使用来自其他来源的数据更新SQL Server表(DataTable)

我有一个从.xls表生成的DataTable 。 我想将此DataTable存储到SQL Server数据库中的现有表中。 我使用SqlBulkCopy来存储具有唯一PK的行。 问题是,我还有其他行与SQL Server表具有相同的PK ,但包含与 SQL Server表相比具有不同值的单元格 。 简而言之: 让我们在我的DataTable说我有这样一行: id(PK)| 名字| 数 005 | abc | 123 006 | lge | 122 对于我的SQL服务器,我有这样的想法; id(PK)| 名字| 数 004 | cbs | 345 005 | lks | 122 现在您可以看到行006可以使用SqlBulkCopy直接上传到SQL Server。 另一方面,由于SQL服务器表包含具有相同PK的行,因此无法使用它插入行005 。 现在我尝试手动提取行。 将每个单个单元格提取到ArrayList中,然后生成UPDATE Table语句。 但是这个方法似乎不可行,因为我要处理这么多行。 我正在寻找一种更好的方法来实现这一目标。 任何帮助表示赞赏。 谢谢

远程连接到SQL Server 2005实例时出现C#exception

尝试远程连接到SQL Server 2005实例,但获得以下exception: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 – 查找指定的服务器/实例时出错) 已检查并且服务器已启用以接受远程连接。 我在.NET中使用的连接字符串如下所示: Data Source=SERVERIP\INSTANCE;Initial Catalog=DATABASENAME;User Id=USERNAME;Password=PASSWORD; 有任何想法吗? 谢谢 :)