标签: sql-server

复制数据库的 T-SQL 脚本

我想找到一种基于 T-SQL 脚本的方法来将我的“PROD”数据库(它是只读的并且由几个文件组组成)复制到一个可读/可写的“EDIT”数据库中,我可以在其中使用和编辑数据.

我知道复制数据库向导,并且现在正在使用它 - 但是,我更喜欢自动执行此操作,以便单个脚本可以从备份中恢复 PROD 数据库并将其复制到 EDIT 数据库。

T-SQL 中似乎没有“COPY DATABASE”命令,我也找不到任何其他方法来实现这一点——除了两次恢复备份之外。真的吗?有没有更好的方法来做到这一点?

我想做的是:

  1. 从磁盘开始还原,进入“MyPROD_Database”
  2. 完成后,我想复制刚刚恢复的数据库到“MyEDIT_Database”
  3. 作为最后一步,我想将我的 PROD 数据库的文件组设置为只读

最好全部包含在一个 T-SQL 脚本中,我可以从 SSMS 和/或 sqlcmd 运行该脚本。

系统是SQL Server 2005(备份的地方)和SQL Server 2008(我恢复的地方)。

手套就在那里 - 谁来接它?:-)

马克

restore sql-server

7
推荐指数
2
解决办法
2万
查看次数

SQL Server 和超线程的当前智慧?

很多文章(请参阅Slava Oks 的原始 SQL 2000 文章和Kevin Kline 的 SQL 2005 更新)建议在 SQL 服务器上禁用超线程,或者至少在服务器上启用超线程之前测试您的特定工作负载。

随着真正的多核处理器取代超线程处理器,这个问题逐渐变得不那么重要,但目前在这个问题上的智慧是什么?这个建议是否对 SQL 2005 64 位、SQL 2008 或 Windows Server 2008 有任何改变?

理想情况下,这应该在登台环境中提前进行测试,但是对于已经启用 HT 的服务器呢?如何判断我们遇到的性能问题是否与 HT 相关?与我在提高 SQL 性能时通常追求的所有其他事情相反,是否有一些特定的 perfmon 计数器组合可能会指向这个方向?

编辑:这特别有吸引力,因为我的一些高 cpu 服务器有可能得到全面改进,但客户端将希望看到一些具体的东西,以帮助我确定哪些服务器真正可以从禁用超线程中受益。当然,传统的性能故障排除正在进行中,但有时任何一点点帮助。

hyperthreading sql-server

7
推荐指数
1
解决办法
8072
查看次数

在 SQL Server 2008 中更改数据库所有者;CLR 问题取决于使用的方法?

我附加了一个数据库并尝试将所有者更改为有效的登录名。

我使用了语句:ALTER AUTHORIZATION ON database::my_db_name TO "sa"。数据库属性显示新所有者是“sa”,但是我仍然收到不受限制的 CLR 程序集(0x80FC80F1、0x8013150A)的权限错误,这与程序集信任问题有关。

我改用以下语句解决了这个问题: EXEC sp_changedbowner 'sa'; 更改数据库所有者。

我的问题是,这两种更改数据库所有者的方法有什么区别。它们是等价的吗?我似乎很清楚 sp_changedbowner 正在做更多/正确的事情,而更改授权声明没有做。


如果您有兴趣...在使用 sp_changedbowner 修复问题之前,我尝试过:

  • 将数据库的可信属性设置为 ON;事实上,我这样做了几次;我知道运行不受限制的、未签名的自定义 CLR 程序集是必需的
  • 将每个 CLR 程序集的所有者更改为 dbo,因为所有者是空白的,但显然 dbo 已经是所有者,并且在 SSMS 中它始终是空白的。
  • 将每个 CLR 程序集的所有者更改为其他内容,但这不起作用,因为具有依赖程序集的程序集似乎总是需要相同的所有者;但是不可能通过提供的界面同时更改所有者。
  • 调用 GRANT UNSAFE ASSEMBLY 到 [sa];显然,您无法授予该内置帐户以及其他一些帐户的权限;他们已经获得许可
  • 将 GRANT UNSAFE ASSEMBLY 调用到 [NT AUTHORITY\NETWORK SERVICE](程序集中的帐户调用方法);没有错误,但似乎没有实现任何目标(可能更改了错误编号?尽管消息从未更改)。
  • ...可能还有一些我不记得的事情。

security permissions database-administration sql-server

7
推荐指数
1
解决办法
4万
查看次数

计算机重新启动后自动启动 SQL Server 代理

我每天都在使用它SQL Server Agent来运行一些作业,但问题是每当服务器(机器本身)重新SQL Server Agent启动时,当计算机再次启动时它不会自动启动......我必须手动启动它我。

如何在计算机重新启动后将服务器代理设置为自动启动?
是否需要将特定的 Windows 服务设置为自动启动?

windows-service sql-server

7
推荐指数
1
解决办法
3万
查看次数

SQL Server 安全打击

我作为一个城市的 SQL Server DBA 已经工作了 2 年。

我被带去支持现有的 DBA,所以我慢慢地接受了一切,并且已经工作了一段时间,试图在组织中获得信誉。是时候解决最棘手和最重要的问题了:安全。

我们的主服务器是一个故障转移集群,上面有 sql 2005。它拥有 166 个数据库。它为大多数应用程序提供 550 个左右的应用程序池连接,因此它可以轻松支持数千名用户。我们还为一个获得大量流量的公共网站提供服务。供应商应用程序、内部应用程序、访问后端 - 包含一些关键应用程序的种类繁多。

许多开发人员具有生产访问权限。更改是在 RFC 流程之外进行的,我们不知道开发人员正在更改哪些数据。他们还喜欢在系统实施期间获得生产访问权 - 我也想停止这样做。

由于运行了如此多的应用程序,任何理智的 DBA 都会锁定服务器。

您将如何将开发团队从广泛开放的安全过渡到更严格的环境?

我正在开发一个紧急请求系统,它可以让他们在有限的时间内访问他们的数据库。这将使我们能够审计访问和 ddl 更改。希望这不会被使用 - 因为这意味着我们没有响应页面。它将使用 HTTP、加密的 webconfig、屏幕上的登录/密码(不是电子邮件),请求限制为每 12 小时 3。我们也会在登录时被传呼。

有关此类系统的任何警告?

我可以看到的主要风险是,如果用户的 ntlogin 受到损害 - 他们的数据库也会受到损害。我们现在有这个漏洞,因为他们总是可以访问,但永远不会知道它是否发生。


编辑:开发和登台是具有 8 个内核和 8GB 内存的强大系统。计划实施 prd 到 stg 复制机制,如果他们的数据库不是很大并且不包含敏感信息,开发人员可以操作该机制。

管理层是支持的。如果我们能保证他们在紧急情况下的访问,他们最大的担忧就得到了解决。另一个问题可能是在实现过程中可以访问生产 - 我宁愿不提供。我们可以先练习转移到登台,然后在那里上线期间进行测试和修复 - DBA 迁移到 prd。

sql-server sql-server-2005

7
推荐指数
1
解决办法
297
查看次数

Windows Server 2008 内存不足

我有一个安装了 8GB RAM 的 Windows 2008 x64 服务器。

任务管理器和资源监视器都坚持使用 7.5GB 的 RAM。但是,Processes (Memory Private Bytes) 下的内存列表并没有加起来。我确实检查了所有用户的 Show Processes 并手动添加了我想出的大约 3.5GB RAM 的数字。

我还查看了 SysInternals Process Explorer 的最新副本。并且私有字节或工作集加起来都不会超过大约 3.5GB 的正在使用的 RAM。

这是怎么回事?

======

更新:我重新启动服务器以查看内存利用率会发生什么。启动和常规操作开始后,它的 RAM 使用量为 3GB。18 小时后,它恢复到 6.8GB 的​​使用量,但没有迹象表明额外的 3.5GB 左右的 RAM 正在使用何处。

以下是资源监视器和任务管理器屏幕截图的链接:

资源监视器

任务管理器

更新 2:好吧,我相信我找到了问题所在。当我从我的 sql server 中分离一个较大的数据库时,显示为“正在使用”的 ram 数量急剧下降。Memory Private Bytes 计数几乎没有移动。所以我猜测 SQL Server 有某种分配内存的方法,它不会真正出现在任何监视器中。

我进一步创建了一个新的数据库文件,然后从我分离的那个文件中传输了所有数据。即使它有相同的数据,并且有相同的事务通过它,使用的内存仍然很低。也许数据库中有一些损坏?我将把它留给 DB 大神,然后去寻找另一个“问题”;)

windows-server-2008 memory sql-server

7
推荐指数
1
解决办法
9368
查看次数

SQL Server 2005 性能审计

你们有执行 SQL Server 2005 性能审计的任何好的分步类型链接吗?

像这个链接这样的东西会很棒,但对于 SQL Server 2005。

performance sql-server sql-server-2005

7
推荐指数
1
解决办法
364
查看次数

使用 VSS 与本机 SQL Server 的 SQL Server 数据库备份

我们目前正在考虑使用戴尔的 EqualLogic Auto-Snapshot Manager/Microsoft Edition (ASM/ME) 来备份我们的 SQL Server 数据库。但是,我对此非常怀疑,因为 ASM/ME 使用 Microsoft 卷影复制服务 (VSS) 来提供用于备份和恢复数据的框架。

我担心的是,虽然 VSS 备份在技术上可行,但使用这种方法可能会导致数据库损坏,因为数据库不知道 VSS 备份并且无法确保在备份之前提交所有内容。

Microsoft 基于 VSS 的备份对于 SQL Server 数据库备份和还原是否可以接受?我还有其他需要注意的问题或注意事项吗?

backup vss sql-server

7
推荐指数
1
解决办法
1万
查看次数

SQL Server 2008 管理需要多少努力?

我正在为 ASP.NET MVC 应用程序寻找合适的托管环境。我的选择之一是租用 Hyper-V 服务器并在其上安装我的 SQL Server 2008 许可证。我对共享主机有点警惕,因为到目前为止我尝试过的主机似乎没有非常一致的性能。

一个潜在的问题是我对 SQL Server 管理不太了解,所以我不确定这是否是一个好的选择。我已经运行了两个 Linux 专用服务器的故障转移集群超过 5 年了,MySQL 从来没有给我带来任何麻烦。但那是 Linux,Windows 系统可能会有所不同。

运行效率低下的 MS SQL Server 2008 困难吗?它是否需要任何深入的管理知识?或者可能是经常性的管理工作(例如使用最新补丁使服务器保持最新状态)?或者更像是类似于 MySQL 的“安装后忘记”体验?

database-administration sql-server

7
推荐指数
2
解决办法
237
查看次数

帮助!数据库“tempdb”的日志文件已满。备份数据库的事务日志以释放一些日志空间

我们正在运行 SQL Server 2000。在我们的数据库中,我们有一个包含大约 750,000 行的“订单”表。我们可以在这个表上执行简单的 SELECT 语句。但是,当我们想要运行像 SELECT TOP 100 * FROM Orders ORDER BY Date_Ordered DESC 这样的查询时,我们会收到以下消息:

错误:9002,严重性:17,状态:6 数据库 'tempdb' 的日志文件已满。备份数据库的事务日志以释放一些日志空间。

我们的数据库中有其他表,它们的大小与表中的记录数量相似(即 700,000 条记录)。在这些表上,我们可以运行任何我们想要的查询,而且我们永远不会收到有关“tempdb 已满”的消息。

为了解决这个问题,我们备份了我们的数据库,缩小了实际数据库,同时缩小了 tempdb 系统数据库中的数据库和文件,但这并没有解决问题。

我们的日志文件的大小设置为自动增长。

我们不确定下一步要去哪里。有什么想法为什么我们仍然可能会收到此消息?

错误:9002,严重性:17,状态:6 数据库 'tempdb' 的日志文件已满。备份数据库的事务日志以释放一些日志空间。

sql-server

7
推荐指数
1
解决办法
4367
查看次数