您如何管理更改 SQL Server 并更新所有连接到它的客户端以指向新服务器?如果我有 SQLSERVER1,那么购买新硬件并调用新服务器 SQLSERVER2 并迁移所有数据库,我必须更改所有应用程序服务器、报表服务器、某些工作站等上的 ODBC 连接以指向新的 SQL Server 实例。
有没有办法将客户端指向指向真实 SQL Server 实例的别名或代理,这样就不必在更改时更新所有客户端?
我有一个客户,他有一个在 MS SQL Server 2008 上运行的 .Net 应用程序,由我们公司作为 Microsoft Small Business Server 的一部分提供。他一开始有大约 5 个用户,因此我们没有出售任何额外的许可证。今天有 40 个用户,而且性能下降。一位 MS 顾问说,要提高性能,您需要购买额外的许可证。
有没有关系。无论如何,我计划以法律为由强迫客户购买额外的许可证。但是也会有任何明显的性能差异吗?
能否SQL Server通过 WAN 为工作站提供服务?
我指的是大型组织(例如大型公司或政府部门)用来在同一城镇的不同建筑物之间创建网络的 WAN 类型。
我想构建一个脚本,将每个用户数据库的恢复模式设置为 SIMPLE,并将其放入我的开发服务器的代理作业中。看起来很简单(抱歉双关语):
EXEC sp_msforeachdb 'USE ?; IF DB_ID() >= 5 ALTER DATABASE ? SET RECOVERY SIMPLE;'
Run Code Online (Sandbox Code Playgroud)
它也有效。只针对正确的数据库执行,等等。但是,我收到以下错误消息:
消息 5058,级别 16,状态 1,第 1 行
无法在数据库 'tempdb' 中设置选项 'RECOVERY'。
我可以针对用户数据库的 sys.databases 视图编写动态 SQL,但我想知道为什么 sp_msforeachdb 会生成此错误。
有没有人有任何经验可以阐明这一点?
编辑:将代码设置为排除 ID < 5 的任何数据库,我很困惑为什么我会收到此错误。
我正在为 Windows Server 2008 R2 上的 SQL Server 2008 R2 设置一个两节点故障转移群集。
Microsoft 建议仲裁磁盘至少使用 512MB 大小的 LUN,但没有建议见证 LUN。对于这种类型的设置,人们通常使用什么?
windows-server-2008-r2 windows-cluster sql-server failovercluster sql-server-2008-r2
在这里寻求帮助。
我有两个使用 SQL Server 2005 托管在专用 Windows 2003 服务器上的 ASP.Net Web 应用程序。其中一个应用程序每天仅收到大约 100 次唯一点击,而另一个应用程序每天平均收到 6,000 次唯一点击。这两个应用程序现在已经运行了大约 4 年,没有任何问题。
最近我注意到两个应用程序都变慢了很多,页面加载需要很长时间,比平时长得多。我还注意到其中一个应用程序可能每天出现一次或两次以下错误
System.Data.SqlClient.SqlException:超时已过期。操作完成前超时时间已过或服务器未响应。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System .Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
两个数据库的容量加起来大约为 3 Gig,服务器上的 C 盘大约为 20 Gig。但是,C 驱动器上的当前可用空间为 3 Gig。
我最初认为超时错误是由于我的代码中的连接泄漏引起的,但现在我不太确定,因为如上所述,应用程序已经运行了 4 年,没有像这样的任何问题。
您认为问题可能出在我的服务器上吗?
任何帮助将不胜感激。
谢谢你。
在我的项目中,我有一个用于所有内容的数据库。我希望它分成两个数据库。具有查找值的静态表将存储在一个 DB 中,而另一个 DB 将具有包含动态数据的表。我的问题是我将如何在这两个数据库之间使用外键约束。有人可以帮助我并建议一种继续进行的方法,如果我提供了相同的示例,则更好。
我想过对表使用同义词,然后对同义词进行约束。但后来我才知道同义词不能用于约束。
我需要维护来自两个数据库的表之间的关系,因为问题与更新有关,在新版本中,我只想更新查找表,同样我想拆分我的数据库。
我只是为 SQL 服务器用户设置了对单个表的访问权限。我通过为用户提供 db_datareader 角色来做到这一点。然后我通过设置每个表的 DENY 列中的所有复选框来设置我不希望此用户访问的所有表的权限。
那行得通,但要点击很多框。
有没有更短、更简单的方法来做到这一点?
我是数据库管理的初学者,所以请耐心等待。我有一个 500MB 的小 DB 和一个非常大的事务日志 (19GB)。我想将其保持在“完全恢复”模式,因此请不要建议使用“简单”恢复模式。
我一直在研究如何减少事务日志的大小,我正在尝试实施这些建议,但日志大小没有改变。
首先,这是我要做的:我有一个日常备份任务,备份维护计划内的所有数据库。这是一种“完整”备份类型,似乎运行良好。我看到每天备份的文件与数据库本身的大小相似。
现在我有一个完整的备份,我继续做一个手动“事务日志”类型的备份,它带有“截断事务日志”选项。
备份在几秒钟内完成,创建一个大小为几兆字节的文件,但事务日志的大小保持不变。
我究竟做错了什么?
我们目前正在评估 Azure 的 SQL 数据库服务(与本地安装相比),因为我们希望将“始终加密”功能集成到我们的(基于 Java 的)应用程序中。
问题是,表演很糟糕。
我正在从位于同一地区(巴黎)的物理服务器连接到在“法国中部”地区创建的数据库。
我编写了一个非常简单的 java 应用程序,它在一个非常简单的表中执行 5000 次插入(准备好的语句),它使用 Microsoft jdbc 驱动程序和 Azure 提供的连接字符串。
无论我使用什么类型的 SQL 数据库(最后一次使用 S6 标准测试),都需要将近一分钟才能完成。Java 应用程序在生产服务器(8 核)上运行。我希望使用远程数据库会有一些延迟,但不会达到这个级别。(相同的测试在 5 秒内使用本地服务器上的 SQL Server 运行)。
这是意料之中的吗?我虽然我们的案例是由 SQL 数据库服务(远程 SQL 服务器)解决的案例。我还在同一个区域创建了一个VM,通过数据库的公共IP连接,它几乎一样糟糕。我尝试在其他欧洲国家创建 SQL 数据库,结果更糟。