Tag: sql server

在我的数据库中存储时区信息的最佳方法是什么?

我有一个asp.net-mvc网站,我接手了一个页面页面,人们输入信息和时间(包括当地时区)。 数据库持续开始时间,结束时间和时区,因为它对我来说感觉有点不稳定。 这是获取列表的代码: static private IEnumerable GetTimeZones(string selected) { var timeZoneNames = TimeZoneInfo.GetSystemTimeZones() .Where(tz => tz.DisplayName.Contains(“London”) || tz.DisplayName.Contains(“Hong Kong”) || tz.DisplayName.Contains(“Mumbai”) || tz.DisplayName.Contains(“Eastern Time”)) .ConvertAll(tz => tz.DisplayName).ToList(); var items = new List(); foreach (var item in timeZoneNames) { var slItem = new SelectListItem(); slItem.Text = item; slItem.Value = item; slItem.Selected = item == selected; items.Add(slItem); […]

在C#中创建(按需)SQL Server 2008 Express数据库的最佳实践?

目的是在全新的SQL Server 2008 Express数据库中处理用户的数据(您可以将其称为项目,文档,文件或其他内容)。 预计数据占用的空间将远远少于快递版本提供的4GB空间(也可免费分发)。 例如,每次用户选择File-> New命令时,将在指定位置创建一个新的空数据库。 另一方面,类似的命令File-> Open必须提供支持以检索数据库列表以选择一个用于打开的数据库。 因此,必须解决以下问题:a)应用程序必须能够创建连接字符串并通过代码(C#)将数据库附加到SQL Server 2008 Express b)应用程序必须能够检索(再次通过代码)a列出所有可用的数据库,以便用户有机会选择一个打开。 我认为在资源中使用模板数据库并将其复制到用户指定的位置会很有帮助。 你认为这是一个有效的解决方案吗? 你有什么建议吗?

以编程方式查找sql​​ server的所有实例

我知道有很多类似于这个的主题,但没有一个提供我正在寻找的正确答案。 我正努力在我们的网络上收集所有SQL-Server实例。 它应该能够检测正在运行的SQl-Server的版本。 我们运行的不同版本在“ SQL Server 2000 ”和“ SQL Server 2008 R2 ”之间有所不同 为了给你一些背景信息,目前我正在我们的本地网络上开发,但稍后它将在我们的服务器上运行以收集信息。 收集的一些信息是: 应用程序池 iis安装 服务器上的所有数据库 还有更多像这样的东西 通过WMI查询,以上所有工作都没有问题。 但我无法通过WMI或Visual Studio 2010中的命名空间获得正确的SQl-Server实例。 根据其他解决方案在stackoverflow和其他网站上找到的一些我尝试过的东西: WMI,使用不同的命名空间,例如root\\Microsoft\\SqlServer\\ComputerManagement10和ServerSettings类。 但这只给SQLSERVER和SQLEXPRESS一个版本号。 让它变得毫无用处。 我也试过root\\CIMV2 Win32_Product包括一个类似sql子句的地方。 但这会返回比我正在寻找的更多的数据。 另外,查询本身非常慢。 后来我在Visual Studio中找到了一些类,例如SqlDataSourceEnumerator 。 虽然这仅在某个服务正在运行且某些端口处于打开状态时才有效。 由于可能的安全问题和可能的错误数据,我们最好不要这样做 我还看到一些人引用了一些其他命名空间(一旦我再次找到它们就会将它们写在这里),但msdn表示我们将在不久的将来删除这些命名空间。 总结一下:我需要在一个版本在2000和2008 R2之间变化的域上检索所有已安装的SQL-Server实例。

entity framework包括性能

我一直在关注entity framework的性能,特别是关于使用Includes以及生成和执行各种查询所花费的时间。 我将详细介绍我所做的更改,但如果您认为任何这些假设是错误的,请纠正我。 首先,我们在数据库中有大约10,000个项目(不是很多),并且数据库显着标准化(这导致了大量的导航属性)。 目前的方法是延迟加载所有内容,并且假设请求一个项目可以假脱机数十个db请求,性能非常差,特别是对于较大的数据集。 (这是一个inheritance的项目,第一步是尝试在没有重大重组的情况下提高性能) 因此,我的第一步是获取查询结果,然后仅将导航属性的包含应用于这些结果。 我知道这在技术上执行了2个查询,但是如果我们存储了10,000个项目,但只想返回10个项目,那么仅在这10个项目中包含导航属性更有意义。 其次,在查询结果上使用多个包含且结果集大小非常大的情况下,仍然会遇到性能不佳的问题。 关于什么时候需要加载以及何时将延迟加载到位,我一直很务实。 我的下一个更改是批量加载查询包含,因此执行: query.Include(q => q.MyInclude).Load(); 这再一次显着提高了性能,虽然还有一些db调用(每批包含一个),它比大型查询更快,或者至少减少了entity framework尝试生成大型查询的开销。 所以代码现在看起来像这样: var query = ctx.Filters.Where(x => x.SessionId == id) .Join(ctx.Items, i => i.ItemId, fs => fs.Id, (f, fs) => fs); query .Include(x => x.ItemNav1) .Include(x => x.ItemNav2).Load(); query .Include(x => x.ItemNav3) .Include(x => x.ItemNav4).Load(); query .Include(x => x.ItemNav5) .Include(x […]

如何为我的应用程序构建搜索机制?

现在似乎有一个常见的要求是拥有一个搜索function,几乎可以搜索任何你想要的东西。 任何人都可以给我样品或提示如何建立一站式搜索应用程序? 例如:您有3个表客户,产品,员工。 该应用程序有一个母版页,右侧有一个文本框,与stackoverflow上的文本框非常相似。 我怎么搜索说“凤凰”一词并且有类似的结果 顾客 Result 1 …… 制品 Result 1 …… 雇员 Result 1 …… 任何提示,教程和提示都将非常感激。 我的环境是Win2k3,.net3.5,C#,ASP.net。 编辑:专注于性能和可扩展性。 提前致谢!

动态创建.mdf / .sdf数据库

如何使用“代码”创建一个新的.mdf / .sdf数据库? 我试过这个: http : //support.microsoft.com/kb/307283 所有这一切都是在ConnectionString上失败的。 由于在创建之前我没有与存在的文件的连接,我怎么才能只创建一个mdf / sdf数据库来连接到SQL Express Server? 我希望能够只连接到服务器并创建文件,从那里可能更容易创建表等。 有什么建议?

如何知道Linq To SQL中的字段是否为数字

我需要选择列值为数字的表格行,任何帮助? 编辑:我有一个varchar列,我需要选择那些数字和那些不是。 编辑2:Integer.TryParse无法使用,因为它无法转换为SQL。

以编程方式使用备份数据库

如何以编程方式使用.bak数据库备份文件(通过SQL Server中的查询备份)? 我希望我的应用程序将我的数据库备份到一个位置(我已经可以这样做),并且我还希望它能够加载备份的数据库(.bak文件)。 我怎么能用C#做到这一点?

将大规模CSV文件上载到SQL Server数据库

我需要将大量(16GB,6500万条记录)CSV文件上传到SQL Server 2005数据库中的单个表。 有没有人对最佳方法有任何指示? 细节 我目前正在使用C#控制台应用程序(.NET framework 2.0)将导入文件拆分为50000条记录的文件,然后处理每个文件。 我使用SqlBulkCopy类将数据从控制台应用程序上传到数据库中,批量为5000.分割文件大约需要30分钟,上传整个数据集(6500万条记录)大约需要4.5小时。 生成的文件大小和批量上载大小都是配置​​设置,我正在研究增加两者的值以提高性能。 要运行该应用程序,我们使用具有16GB RAM的四核服务器。 该服务器也是数据库服务器。 更新 鉴于到目前为止的答案,请注意在导入之前: 截断数据库表,并删除所有索引和约束。 数据库收缩,回收磁盘空间。 导入完成后: 索引将重新创建 如果您可以建议任何不同的方法,或者我们可以改进现有导入应用程序的方法,我将不胜感激。 谢谢。 相关问题 以下问题可能对处理此问题的其他人有用: 从平面文件向SQL Server 2005插入数百万条记录的潜在缺陷 解 我已经研究了改变批量大小和拆分文件大小的影响,发现批量500条记录和200,000条记录的拆分文件最适合我的应用程序。 使用SqlBulkCopyOptions.TableLock也有帮助。 有关详细信息,请参阅此问题的答案。 我还研究了使用SSIS DTS包和BULK INSERT SQL脚本。 SSIS包看起来更快,但没有让我能够记录无效记录等BULK INSERT SQL脚本虽然比SSIS包慢,但比C#应用程序要快得多。 它确实允许我记录错误等,因此,我接受来自ConcernedOfTunbridgeWells的BULK INSERT答案作为解决方案。 我知道这可能不是面对这个问题的每个人的最佳答案,但它解决了我的直接问题。 感谢所有回复的人。 此致,MagicAndi

SQL Server阻止访问组件’Ole Automation Procedures’的过程’sys.sp_OACreate’

SQL Server阻止访问组件“Ole Automation Procedures”的过程sys.sp_OACreate ,因为此组件已作为此服务器的安全配置的一部分关闭。 系统管理员可以使用sp_configure启用“Ole Automation Procedures”。 有关启用“Ole Automation Procedures”的详细信息,请参阅SQL Server联机丛书中的“Surface Area Configuration”。 我试图启用Ole Automation Procedures: sp_configure ‘show advanced options’, 1 GO RECONFIGURE; GO sp_configure ‘Ole Automation Procedures’, 1 GO RECONFIGURE; GO sp_configure ‘show advanced options’, 1 GO RECONFIGURE; 当我执行查询时,我成功获得输出。 但是在尝试通过Windows窗体时,我收到了这个错误。 请帮我