免责声明:我知道这个问题之前已经被问过一百次了,但我只是想检查一下,在我继续编写/获取大量代码之前,我可能错过了没有更简单的解决方案。
我们的软件使用最初为 SQL Server 7 设计的数据库,因此,创建它的所有脚本都没有为任何字符列指定任何显式排序规则。相反,当一个数据库被创建/恢复到 SQL Server 2000 或更高版本时,每一列都会继承数据库排序规则(这恰好是SQL_Latin1_General_CP1_CI_AS因为这是 SQL Server 7 的默认设置)。
从理论上讲,这不会有太大影响,因为如果我们的数据库是在客户的服务器上从头开始创建的,它会继承客户的服务器排序规则(通常是现代安装默认设置Latin1_General_CP1_CI_AS),并且一切正常。但是,当他们向我们发送数据库备份,或者我们向他们发送数据库备份时,这种情况就会崩溃,并且每当代码尝试访问临时表等时,我们或他们都会遇到可怕的排序规则不匹配错误。
我们曾尝试教育客户安装或重建他们的 SQL Server 实例以使用我们首选的排序规则,但当然这并不总是发生,也不总是可能的。
涉及创建新数据库和复制数据的解决方案对我们来说并不实用,我们需要一个“魔杖”,我们可以在实时数据库中挥动它以在不干扰数据的情况下就地更正所有列。我正在考虑编写一个实用程序来做到这一点,但由于这将是一项艰巨的工作,有人有更简单的建议吗?
在我的开发人员计算机上,我有一个名为developer_2005的 SQL Server 实例。在我们正在创建的 C# 应用程序的资源设置文件中,实例名称设置为foobar(不是真的,只是作为示例)。因此,当我运行该应用程序(在 debug 或 realease 中)时,它会尝试连接到本地主机上名为foobar的 SQL Server 。
我想知道是否可以创建别名或类似的东西,以便应用程序实际上在名为foobar 的本地主机上找到一个 SQL Server ,但它实际上连接到名为developer_2005的实例。
应用程序配置文件中的连接字符串是Data Source=localhost\foobar;Initial Catalog=barfoo;Integrated Security=True,提供程序名称为System.Data.SqlClient。如果我将localhost\foobar更改为localhost\developer_2005,那么应用程序可以像它应该的那样连接。如何创建别名以便不必更改文件中的字符串?
我尝试在 SQL Server Management Studio 中使用注册的服务器名称“localhost\developer”创建服务器注册,但这似乎没有任何好处。甚至不确定那真的做了什么......但后来我发现了 SQL Server 配置管理器\SQL Native Client 配置\别名。我有点假设这就是解决方案所在。但是我不太清楚如何添加一个新的......创建一个新的时,我必须提供别名,端口号,协议和服务器,我真的不知道该放什么的任何一方。
我在 PostgreSQL 8.3.1 中有一个数据库,我想将其迁移到 MS SQL Server 2005(或 2008),包括表架构和数据。数据库大小约为 50GB,大约有 400,000,000 行,所以我认为简单的 INSERT 语句是不可能的。有人可以推荐执行此迁移的最佳工具吗?显然它需要可靠,因此目标数据库中的数据与源数据库中的数据完全相同,并且需要能够在合理的时间内复制这一数量的数据。
有谁知道在 SQL 环境中,SSD 与 HDD 的性能比较有哪些比较?
我试图了解迁移到 SSD 可能会获得什么类型的性能优势。
我们有一个 SQL 2000 DB。由于 Raid 阵列故障,服务器崩溃。现在,当我们运行 DBCC CHECKDB 时,我们得到一个错误,即 9 个页面中有 27 个一致性错误。
当我们在这些页面上运行 DBCC PAGE 时,我们得到:
Msg 8939, Level 16, State 106, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19.
Msg 8939, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0.
Run Code Online (Sandbox Code Playgroud)
由于指示的索引是非聚集的,并且是由包含 2 列的唯一 constarint 创建的,因此我们尝试删除并重新创建索引。这导致了以下错误:
CREATE UNIQUE …Run Code Online (Sandbox Code Playgroud) 用户需要 SHOWPLAN 权限才能使用执行计划来调整查询。
此权限的含义是什么。授予用户权限是否安全?我在这里看到了安全说明,这与我无关。
还有其他需要注意的问题吗?从我看来,即使在生产数据库上,授予用户此权限似乎也不是问题。
谢谢您的帮助!
我想为我的团队建立一个维基。我需要它在 Windows/IIS 上运行,如果它需要一个数据库,则针对 SQL Server。
用户身份验证必须使用/与 Active Directory 集成,最好是本机而不是使用 LDAP。
理想情况下,授权将使用 Active Directory 组而不是内部的东西。
理想的 wiki 将在 Server 2008 R2 x64、IIS 7.5 和 SQL Server 2008 上运行,但这些不是要求,只是很好的条件。
有没有符合这些要求的东西,你会推荐它吗?
我正在将用户分配给新数据库。与作为 db_owner 角色成员分配登录相比,作为默认 dbo 用户的用户有什么区别?
我们有一些 MS SQL 服务器,它们在同一台服务器上设置了不同的实例以分隔应用程序数据库,还有一些服务器在同一实例上设置了所有数据库,只是用安全设置分开了。
什么时候为 SQL 服务器创建一个新实例并在该实例中安装你的数据库而不是仅仅在同一个实例上创建一个新的数据库并围绕数据库本身设置安全性是可取的?是否有更多的决定只是一个安全方面?
任何有使用 SQL 2008 经验但都在 RAM 中的人?试图使某些事情更快,并且可能会继续这样做,谢谢
sql-server ×10
security ×2
alias ×1
dbcc ×1
hard-drive ×1
localhost ×1
migration ×1
performance ×1
postgresql ×1
sql ×1
ssd ×1
wiki ×1
windows ×1