Tag: sql

通过C#备份SQL Server

通过C#代码备份SQL Server数据库有多容易? 我看到很多相关的问题,但没有真正的答案。

使用C#在SQL Server上的临时表中插入3万行的最快方法

我试图找出如何使用c#在SQL Server的临时表中提高插入性能。 有些人说我应该使用SQLBulkCopy但是我必须做错了,因为它似乎比简单地构建一个SQL插入字符串慢得多。 我使用SQLBulkCopy创建表的代码如下: public void MakeTable(string tableName, List ids, SqlConnection connection) { SqlCommand cmd = new SqlCommand(“CREATE TABLE ##” + tableName + ” (ID int)”, connection); cmd.ExecuteNonQuery(); DataTable localTempTable = new DataTable(tableName); DataColumn id = new DataColumn(); id.DataType = System.Type.GetType(“System.Int32”); id.ColumnName = “ID”; localTempTable.Columns.Add(id); foreach (var item in ids) { DataRow row = localTempTable.NewRow(); […]

entity framework连接字符串麻烦

我正在制作一个小型库(DLL)来管理用户及其角色/权限。 该计划是能够将此dll添加到MVC项目并能够操纵用户/角色/等。 所有数据都驻留在SQL数据库中。 我正在使用entity framework进行数据访问。 所以当我初始化一个新的RoleManager(这是我正在制作的lib中的主类的名称)时,我提供了一个connectionString,如下所示: RoleManager roleManager = new RoleManager(string connectionString); 然后在构造函数中我这样做: db = new RoleManagerEntities(connectionString); //This is the EntityFramework 我正在尝试提供此连接字符串(以及许多其他字符串) “metadata=res://*/RoleManager.csdl|res://*/RoleManager.ssdl|res://*/RoleManager.msl;provider=System.Data.SqlClient;provider connection string=’Data Source=localhost;Initial Catalog=Login;Integrated Security=True;Connection Timeout=60; multipleactiveresultsets=true'” 我收到以下错误: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid. 这个问题是我试图从我的新项目中实例化EF而不提供连接字符串并且我的应用程序配置中没有任何内容的默认值。 […]

需要一次一个地遍历SQL表行(表太大而无法使用adapter.Fill)

我很容易通过这样的小型SQL Server 2005表进行读取: string cmdText = “select * from myTable”; SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connection); DataTable table = new DataTable(); adapter.Fill(table); 不幸的是,这种方法似乎将整个表加载到内存中,这根本不适用于我正在使用的巨大表。 我希望能够一次一行地遍历表,这样一次只需要一行存储在内存中。 有点像: foreach (DataRow row in rowIteratorObject) { // do something using the row // current row goes out of scope and is no longer in memory } 类似于您可以使用StreamReader一次处理一行文本文件的方式,而不是一次性读取所有文本文件。 有没有人知道用表行做这个的方法(或者,如果我咆哮错误的树,另一种解决方案)?

使用c#进行查询validation

我在c#中寻找一个查询validation器,它允许我从文本框中解析SQL文本,并在发送它执行之前validation它是否正确。 (MS SQL或DB2查询)。

C#从SQL DataTable填充combobox

DataTable _dt = new DataTable(); using (SqlConnection _cs = new SqlConnection(“Data Source=COMNAME; Initial Catalog=DATABASE; Integrated Security=True”)) { string _query = “SELECT * FROM Doctor”; SqlCommand _cmd = new SqlCommand(_query, _cs); using (SqlDataAdapter _da = new SqlDataAdapter(_cmd)) { _da.Fill(_dt); } } cbDoctor.DataSource = _dt; foreach(DataRow _dr in _dt.Rows) { cbDoctor.Items.Add(_dr[“name”].ToString()); } 有一个错误… 结果是System.Data.DataRowView而不是数据库中的数据..

使用nhibernate和ICriteria连接两个不相关的视图表

我有两个基于两个视图的实体。 映射看起来像这样: 完全A: 实体B: 实体A基于表视图,该视图是用于搜索优化的更复杂的表结构的展平视图。 现在,我希望能够通过使用NHibernate和Criteria-API从实体A中获取Id在实体B中 “InvoiceId”列中的所有行,以获取实体B中“ResourceId”的特定值。 这两个表都是视图,它们没有声明的关系。 我在C#中尝试了以下代码,但它不起作用: var criteria = _session.CreateCriteria(typeof(SearchView)); criteria.CreateAlias(“SearchInvoiceResourceLookUpView”, “srf”,JoinType.InnerJoin) .Add(Restrictions.EqProperty(“sfr.InvoiceId”, “Id”)) .Add(Restrictions.Eq(“sfr.ResourceId”, invoiceResId)); 用于此目的的原始SQL将是: SELECT * FROM SearchView JOIN SearchInvoiceResourceLookUpView srf on srf.InvoiceId = Id WHERE srf.ResourceId = ‘[Inser resource id here]’ 我该如何解决这个问题? 还有另一种更好的方法吗?

将SQL 2008 DB R2还原为SQL2008(无r2)

在我的开发者PC上安装了SQL 2008 R2 在内部服务器上安装了SQL 2008 R2(这里托管了一些应用程序) 在外部的第三方托管公司使用SQL 2008(没有r2)。 所以当我在我的开发者PC上创建数据库时,我需要在外部托管服务器上恢复,这是SQL 2008(没有r2)….但是我得到了一个构建版本错误……它说SQL2008 r2有更高的内部版本号所以我无法在w / o r2服务器上恢复。 我想在没有R2服务器上创建数据库并在我的localhost上恢复并进行更改并恢复到w / o r2服务器,但它说同样的错误……内部版本号已更改。 我以为我可以在我的开发者电脑上删除r2版本并使用SQL 2008 w / o r2,但问题仍然是我无法将数据库从内部服务器恢复到我的开发者电脑…… 🙁 所以简而言之:如果我想在SQL2008 R2和SQL2008之间恢复/备份数据库,如何处理这个(我需要数据库的数据?任何属性分配给数据库或其他什么? 是否有一个程序可以使用SQL2008 R2 DB作为SQL2008 DB? 我无法触及服务器上的SQL 2008版本…… 请指教?

从TableAdapter获取@@ IDENTITY

我正在尝试完成一个看似简单的任务,这个任务已经变成了几个小时的冒险:从TableAdapter.Insert()获取@@Identity 。 这是我的代码: protected void submitBtn_Click(object sender, EventArgs e) { AssetsDataSetTableAdapters.SitesTableAdapter sta = new AssetsDataSetTableAdapters.SitesTableAdapter(); int insertedID = sta.Insert(siteTxt.Text,descTxt.Text); AssetsDataSetTableAdapters.NotesTableAdapter nta = new AssetsDataSetTableAdapters.NotesTableAdapter(); nta.Insert(notesTxt.Text, insertedID, null,null,null,null,null,null); Response.Redirect(“~/Default.aspx”); } 一个答案表明,我可能要做的就是更改ExecuteMode 。 我试过了。 这使得GetData()退出工作(因为我现在返回一个标量而不是rowdata)(我需要保留GetData())。 它也没有解决insertID变量仍然设置为1的问题。 我尝试在TypedDataSet.XSD创建第二个TableAdapter并将该适配器的属性设置为“标量”,但它仍然失败,变量值为1。 生成的insert命令是 INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description); SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY()) 并且还设置了“刷新数据表”(在Insert和Update语句之后添加select语句以检索Identity)。 […]

包含IN 参数的SqlCommand问题

显然,以下代码不会按预期打印任何内容。我确信这是因为我试图将项目列表放入@namelist 。 显然,它不仅仅是文本替代品。 我怎么解决这个问题? 谢谢 using (var connection = new SqlConnection(_connectionString)) { connection.Open(); using (var cmd = connection.CreateCommand()) { cmd.CommandText = @”select column_name, table_name from information_schema.columns where table_name in (@namelist)”; cmd.Parameters.AddWithValue(“@namelist”, “‘tableOne’, ‘tableTwo'”); var reader = cmd.ExecuteReader(); while (reader.Read()) { var a = reader[0]; Console.WriteLine(a); } } }