我在旧主机帐户上有一个来自 SQL Server 数据库的 .bak 文件,有什么方法可以在 Mac OS X 上使用应用程序查看此文件?我需要做的就是从中获取数据。
谢谢,
凯尔
编辑:我看到您无法在 Mac OS 上读取该文件,但是是否有一种相对简单的方法可以将 .bak 文件拆分为它的组件 .mdf 和 .ldf 文件?Mac 解决方案更可取,但任何不需要安装 SQL Server 的解决方案都很好。谢谢。
我有一台 x64 机器,它经常需要在 SQL Server 客户端网络实用程序 (cliconfig) 中为注册表的 x64 和 x86 端更改大约 10 个别名。有没有办法用powershell脚本来做到这一点?
实际上,其中一项关键作业在执行时失败了。
在错误消息中发现失败是因为它缺少存储过程。
现在我如何找出存储过程何时受到用户的影响。我如何找出哪个用户执行了此操作以及他何时执行了此操作?
最近继承了一个很大很乱的数据库,需要清理一下。为了了解大小,主数据库目前包含 3 个大表,每个表大约有 3 亿行,占用大约 225GB 的存储空间。每天添加超过 500 万行。
由于严重的磁盘空间不足(前任根本没有归档旧数据或管理它的大小),我被迫从最大的表中删除了大约 2.8 亿行。这个过程需要 25 多个小时才能完成,在此期间数据库需要与面向客户的应用程序断开连接。
现在,我需要重新索引表,因为选择和插入需要很长时间。但是,我不能无限期地使数据库脱机,我需要能够估计执行重新索引所需的时间。我以前从未重新索引过这么大的表,所以我真的没有任何好的参考点可以利用。
主表包括一个聚集的、单调递增的主键,以及一个非唯一的非聚集键。我有足够的磁盘空间来执行重新索引。
所以我的问题是:人们大约需要多长时间才能做到这一点?估计重新索引时间的好的经验法则是什么?
我们需要使用 SQL Server 代理 (SQL 2000) 运行日常作业,但我们不希望它在每个月的 22 日运行,因为有其他进程只在当天运行,这会发生冲突。
Agent 中的重复设置不提供任何排除选项,有什么方法可以实现吗?
我在客户的生产环境中有一个奇怪的问题。除了 SQL 服务器在虚拟服务器上运行之外,我无法提供有关基础架构的任何详细信息。数据、日志和文件流文件在另一台存储服务器上(数据和文件流一起并在单独的服务器上登录)。
在我们的本地测试环境中,有一个特定的查询以这些持续时间执行:
- 首先我们清除缓存
- 300 毫秒(第一次需要更长的时间,但从那时起它就被缓存了。)
- 20ms
- 15ms
- 17ms
在客户的生产环境中,SQL Server 更强大,这些是持续时间(我没有清除缓存的权限。明天试试)。
- 2500ms
- 2600ms
- 2400ms
客户生产环境中的服务器功能更强大,但它们确实有虚拟服务器(我们没有)。
可能是什么原因...
你会如何解决这个性能问题?
编辑:
有人问我数据集是否相等,并且确实如此。我在我们的环境中恢复了他们的数据库。确实,这是我第一眼看到的东西。(@Everyone:我添加了编辑,因为这将是许多人会想到的第一件事)。
是否可以在不停机的情况下将 sql server 2005 db 移动到运行 sql server 2008 的其他服务器?该系统是 24/7 全天候运行的,必须移动到具有不同存储空间的不同服务器。
我们尝试复制数据库,但这并不能在过程结束时保持整个数据库同步。
high-availability sql-server sql-server-2005 sql-server-2008
有关系吗?我们从 Thawte 购买我们的证书,我没有看到与您为 Web 服务器购买的证书相反的特殊类型的 SQL Server 证书。
如果这是一个愚蠢的问题,请对我温和。我是一名开发人员,而不是服务器专家。
我有一个使用 4 个独立数据库的 Win Form、Data Entry 应用程序。这是一个偶尔连接的应用程序,它使用合并复制 ( SQL 2005 ) 保持同步。这工作得很好。我要解决的下一个障碍是将过滤器添加到我的出版物中。
现在,我们正在向我们的 150 个订阅者中的每个订阅者复制 70mbs 压缩包,而实际上,他们只需要其中的一小部分。使用过滤器我能够做到这一点(见下面的代码),但我必须制作一个映射表才能做到这一点。此映射表由 3 列组成。一个 PrimaryID(Guid)、WorkerName(varchar) 和 ClientID(int)。
问题是我需要在所有四个数据库中都存在这个表才能将它用于过滤器,因为据我所知,过滤器语句中不允许使用视图或跨数据库查询。
我有哪些选择?
似乎我会将它设置为在 1 个数据库中维护,然后使用触发器在其他 3 个数据库中保持更新。为了成为过滤器的一部分,我必须将该表包含在复制集中,所以我如何适当地标记它。
有没有更好的方法呢?
SELECT <published_columns> FROM [dbo].[tblPlan] WHERE [ClientID] IN (select ClientID from [dbo].[tblWorkerOwnership] where WorkerID = SUSER_SNAME())
Run Code Online (Sandbox Code Playgroud)
这允许您将过滤器链接在一起,下一个过滤器低于第一个过滤器,因此它仅从第一个过滤器集中提取。
SELECT <published_columns> FROM [dbo].[tblPlan] INNER JOIN [dbo].[tblHealthAssessmentReview] ON [tblPlan].[PlanID] = [tblHealthAssessmentReview].[PlanID]
Run Code Online (Sandbox Code Playgroud) replication filtering merge-replication sql-server sql-server-2005
我们有三台 SQL Server 服务器,每台服务器上大约有五六个数据库。我们正在将这些服务器迁移到新的 SAN,我正在研究最佳 RAID 配置。当前,所有数据库的所有日志文件共享一个 RAID 阵列,该 RAID 阵列上除了日志文件外没有其他任何内容,但所有数据库都使用相同的阵列作为其日志文件。
我读过最好将日志文件放在不同的磁盘上。但在我们的例子中,我不确定是否最好拥有一个包含所有日志文件的大约 8 个驱动器的大阵列。还是创建四个两个磁盘阵列并为一些较大的数据库提供自己的日志文件专用磁盘会更好?
sql-server ×10
64-bit ×1
filtering ×1
indexing ×1
mac-osx ×1
performance ×1
powershell ×1
raid ×1
replication ×1