Tag: sql server 2008

修改DAL,System.ArgumentException时出错,“已存在具有相同密钥的条目”

好吧,我完全被这个难倒了。 我可能没有足够的信息在这里发布,但我甚至不知道从哪里开始寻找。 我正在尝试在DAL.edmx文件上“从数据库更新模型”。 我将一个字段包含在之前未包含的视图中。 我尝试刷新,然后我尝试重命名数据库中的视图并从DAL中删除视图,以便我可以重新添加它。 我有两次 接下来,我无缘无故地尝试将我重命名的视图添加到DAL中,得到了相同的exception。 从DAL.tt手动删除没有帮助。 谷歌搜索问题,只有2个不相关的结果。 我不知道哪里开始寻找。 我没有写它,但这里是视图的源sql(如果它有帮助)。 EF不会添加重命名的视图这一事实暗示它可能与SQL有关吗? SQL在mngmnt studio中运行良好。 SELECT ID, IssueID, IssueTypeID, IssueText, IssueCreateDate, WeekendDate, CustomerName, Employee, CONVERT(DECIMAL(6, 2), AdjustedTotalRHours, 101) AS AdjustedTotalRHours, AdjustedTotalOHours, AdjustedTotalRHours + AdjustedTotalOHours AS Hours, InvoiceNumber, AdjustedInvoiceAmount, COALESCE ((SELECT SUM(InvoiceAmount) AS Expr1 FROM TrendingDataFinal AS I1 WHERE (InvoiceNumber = T1.InvoiceNumber) AND (CompanyID = T1.CompanyID) AND […]

使用XML数据类型调用存储过程

我只是尝试使用C#调用存储过程(SQL Server 2008)并将XMLDocument传递给采用SqlDbType.Xml数据类型的存储过程参数。 我收到错误:无法将参数值从XmlDocument转换为String。 下面是代码示例。 如何将XML文档传递给期望XML数据类型的存储过程? 谢谢。 XmlDocument doc = new XmlDocument(); //Load the the document with the last book node. XmlTextReader reader = new XmlTextReader(@”C:\temp\” + uploadFileName); reader.Read(); // load reader doc.Load(reader); connection.Open(); SqlCommand cmd = new SqlCommand(“UploadXMLDoc”, connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(“@Year”, SqlDbType.Int); cmd.Parameters[“@Year”].Value = iYear; cmd.Parameters.Add(“@Quarter”, SqlDbType.Int); cmd.Parameters[“@Quarter”].Value = iQuarter; cmd.Parameters.Add(“@CompanyID”, SqlDbType.Int); […]

System.ArgumentException:表类型参数必须具有有效的类型名称

我试图将用户定义的表类型传递给C#中的查询。 类型定义为2列(org和sub org) 这就是我的代码: DataSet ds = new DataSet(); try { DataTable FilteredOrgSubOrg = new DataTable(“OrgSubOrgValueType”); FilteredOrgSubOrg.Columns.Add(“org”, typeof(string)); FilteredOrgSubOrg.Columns.Add(“subOrg”, typeof(string)); FilteredOrgSubOrg.Rows.Add(org, orgsub); using (SqlConnection conn = new SqlConnection(cCon.getConn())) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = “select * from myTable ex where year = @year’ and qtr = @qtr” + ” and EXISTS(SELECT 1 […]

带有父/子关系的SQL批量插入,是否保留了订单?

与下面提到的其他问题类似,我有两个表格结构: create table parent ( recno int identity(1,1) primary key not null, groupCode int, parentdata varchar(80) ); create table child ( parentrecno int not null, childdata varchar(80) ) 我需要在这些表中快速插入几十万个记录 – 这些表包含数百万个与此插入无关的其他记录,并且永远不会安静。 由于父/子的性质,它不适合SqlBulkCopy (似乎)。 在使用带有INSERT SqlCommand C#中,我插入了大约400-500条记录/秒,这有点太慢了。 伪代码: foreach(Record r in parentRecords) { Insert Fields from r into SqlCommand Parameters but not “recno” Call ExecuteScalar to […]

从SQL Server批量获取记录的最佳方法是什么

场景 :我们从SQL Server获取行到C#.Net控制台应用程序,并通过存储过程对从SQL Server检索到的数据执行操作; 执行操作后,使用C#-MongoDB-Driver将新数据存储到MongoDB中。 问题 :有数十亿行。 我的存储过程包含如下查询: select * from table_name 为了计算出一些批处理逻辑,没有标识列,也没有任何日期列等。 信息 :截至目前,应用程序正在获取最多3500 – 5000条记录并存储到MongoDB中,然后抛出错误,如下所示: System.Runtime.InteropServices.SEHException(0x80004005):外部组件抛出exception。 问题 :任何人都可以建议我从SQL Server批量读取/获取一些逻辑吗?

entity frameworkEF4.1 – 存储过程“无法在容器中找到”

我的数据库中有一个SP。 对于EF4.1,使用DbContext API 。 从数据模型导入函数后,对存储过程的引用在我的开发环境中正常工作。 但是当发布到服务器时,它失败并显示如下消息:在容器’TallyJ2Entities’中找不到FunctionImport’SqlSearch’。 所有其他数据访问工作正常。 似乎在生产中,EF4配置的某些方面被遗忘了。 数据库是相同的,两个服务器都是SQL 2008(本地是Express SP1 10.50.2500,主机是Express RTM 10.50.1600)。 我甚至将EDMX编辑器直接指向生产数据库,并进行了更新。 结果在开发中运行良好,但在服务器上以相同的方式失败。 其他类似的问题在这里没有帮助。 其他人似乎有类似的问题在这里输入链接描述 。 有什么建议? 更新:我发现在调试模式下部署主机时问题就消失了! 在我的DbContext派生类中,我把这段代码: ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace var findFunction = metadataWorkspace.GetItems(DataSpace.SSpace) .SelectMany(gi => gi.MetadataProperties) .Where(m=> Equals(m.Value, “SqlSearch”)) .Select(m => “Found {0}”.FilledWith(m.Value)) .FirstOrDefault(); 当我记录findFunction结果时,事实certificate服务器(在发布模式下)没有找到它,而在开发中,它被找到了。

如何将SQL日期转换为DateTime?

我的SQL数据库中有一个包含date类型的列。 如何将其转换为C# DateTime ,然后再转换回SQL date ?

你如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)?

现在SQL Server 2008内置了全文搜索。我希望用它来支持我网站的搜索。 我也在考虑为我的ORM使用ADO.NETentity framework,但我想知道如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)? 在ADO.NETentity framework中是否有任何支持,或者我是否坚持使用创建使用全文搜索谓词的函数的方法 ?

“当IDENTITY_INSERT设置为OFF时,无法使用组合键在表中为标识列插入显式值”

我们最近在数据库中添加了一个新的“级别” – 在整个数据库的表中的现有ID Identity字段之上/之前添加了一个键“Company_ID”。 例如,如果某个表具有ID然后是字段,则它现在具有Company_ID,然后是ID,然后是字段。 这个想法是,这允许ID为提供给function的每个不同的Company_ID值自动递增(Company_ID 1可以具有ID 1,2,3等; Company_ID 2可以具有ID 1,2,3等)。 自动增量字段保留为ID。 示例表是: [dbo].[Project]( [Company_ID] [int] NOT NULL, [ID] [int] IDENTITY(1,1) NOT NULL, [DescShort] [varchar](100) NULL, [TypeLookUp_ID] [int] NULL, [StatusLookUp_ID] [int] NULL, [IsActive] [bit] NOT NULL, CONSTRAINT [PK_Project] PRIMARY KEY CLUSTERED ( [Company_ID] ASC, [ID] ASC ) 在引入Company_ID之前,为了执行CREATE,我们只需填充DescShort,TypeLookUp_ID,StatusLookUp_ID和IsActive字段,并将ID保留为默认值,可能为0。 记录已成功保存,ID由数据库自动填充,然后用于通过View执行SHOW,依此类推。 但是,现在我们要将Company_ID设置为指定值,保留ID,并像以前一样填充字段。 _db.Project.Add(newProject); _db.SaveChanges(); 是的,我们要指定Company_ID值。 我们希望自动填充ID,如前所述。 我们收到错误消息: […]

如何在SQL Server 2008中将Excel文件插入/检索到varbinary(max)列?

我正在尝试将Excel文件保存到数据库中,我不想使用文件流,因为它需要有一个服务器。 那么如何在具有varbinary(max)类型的列的表中插入/更新/选择?