我有一个需要批量导入的 varbinary(max) 列。我放入此列的数据是 C# 中的 byte[]。如何格式化用于批量导入的逗号分隔文件中的数据?换句话说,如何以 bcp 实用程序接受的方式从 byte[] 转换为字符串?
Michael Hedgpeth's questions
扩展事件似乎是一种更好的技术,对服务器的压力更小,但 SQL Profiler/perfmon 具有更好的工具。此外,扩展事件似乎具有更陡峭的学习曲线。每个应该在什么情况下使用?是否值得通过陡峭的学习曲线来利用扩展事件?
我听说将索引存储在不同的文件组和驱动器上可以提高数据库的性能,因为驱动器不必在索引和索引所引用的数据之间来回切换。我也听说这是一个神话。
何时将非聚集索引存储在单独的文件组和驱动器上是可取的?什么 perfmon/profiler 证据会导致我得出这个结论?硬件是否在决定中起作用(RAID/SAN 是否用于单个驱动器)?
我有一个存储图像的表,每个图像的大小在 16-100 KB 之间。由于图像太小,我接受了Microsoft 的建议,没有使用 FILESTREAM 数据类型。该表的构造很简单:
CREATE TABLE Screenshot(
Id bigint NOT NULL,
Data varbinary(max) NOT NULL,
CONSTRAINT PK_Screenshot PRIMARY KEY CLUSTERED
(
Id ASC
)WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
该表被大量插入(过去一周有 200 万条记录)并且很少被选中。关键是使用hilo 算法,因此在大多数情况下,最后都会添加新行。
当许多进程由于锁定和争用而尝试插入此表时,我遇到了问题。查询因等待锁而超时。
我应该将此表迁移到它自己的文件组和驱动器吗?在这种情况下,如何提高插入性能并减少争用?
我正在尝试创建一个 SQL 作业来备份我的数据库。我希望有:
- 每周完整备份
- 每日差异备份
- 可以清理 14 天以前的备份的东西
我开始使用维护计划来执行此操作,但决定通过作业来管理它会更加灵活。
我的问题是:如何命名备份文件?我是否使用日期命名约定命名它们并使用相同的约定删除旧文件?有没有更简单的方法?
如果我想多了,应该使用维护计划,我也会很感激这个答案。
我想将集成安全性与我的内部应用程序一起使用,这些应用程序都在一个域上。不幸的是,我一直无法让它正常工作。我想在 SQL Server 中为整个 Exchange(Active Directory)组分配一个角色,以便对某些表进行读/写访问。这样我就不必在有人被雇用时创建操作员,也不必在有人被解雇时删除操作员。这可能吗?我会采取什么步骤来做到这一点?
我尝试在我的 SQL Server 2008 数据库上创建一个维护计划,并且对一些开箱即用的东西印象深刻。但是,创建之后,似乎很难定制。这让我想知道我是否应该用我想完成的活动创建 SQL 作业。与手动创建 SQL 作业相比,使用维护计划有什么好处吗?
我必须为我的数据库运行很多长时间运行的查询(重建索引、更新大量数据)。是否有替代方法可以在 SQL Server Management Studio 中运行查询并每隔一小时左右检查一次?我想在完成后收到电子邮件或发送消息,但不知道最好的工具。
我想重新组织我的 SQL Server 2008 数据库中名为“db”的所有表的索引。我尝试以下命令:
ALTER INDEX all ON db REBUILD
我收到以下错误:
找不到对象“db”,因为它不存在或您没有权限
我究竟做错了什么?