小编Ale*_*don的帖子

什么时候应该删除和重新创建索引?

我们正在构建一个最初为 1 TB 的数据仓库,并将每月增长约 20gigs。

对于某些表,我们每天都在执行 ETL 过程,而对于其他表,我们每周/每月执行一次。

当有数据导入到表中时,是否需要删除并重新创建索引?

是否有必要删除和重新创建索引,或者它们是否会自动更新?

统计信息设置为自动更新。

非常感谢您的帮助和指导。

我得到了这个天才脚本:

SELECT 'ALTER INDEX [' + ix.name + '] ON [' + s.name + '].[' + t.name + '] ' +
       CASE WHEN ps.avg_fragmentation_in_percent > 40 THEN 'REBUILD' ELSE 'REORGANIZE' END +
       CASE WHEN pc.partition_count > 1 THEN ' PARTITION = ' + cast(ps.partition_number as nvarchar(max)) ELSE '' END
FROM   sys.indexes AS ix INNER JOIN sys.tables t
           ON t.object_id = ix.object_id
       INNER JOIN sys.schemas s
           ON t.schema_id = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 data-warehouse sql-server

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

安全地公开 sql server 2008 以进行 Windows 身份验证

我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。

我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。

我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。

  1. 我如何确保从 excel 到 sql server 的连接是安全的?
  2. 如何从excel运行存储过程?

我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx

Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。

但是,我希望您对此提出意见。

是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?

sql-server-2008 authentication security sql-server windows

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

选择更多的字段会导致灾难性的失败

我有一个从 sql server 2012 到 pervasive sql 的链接服务器的连接。

当我做的select field1, field2, field3 from mytable一切正常!

但是,当我这样做时,select field1, field2, field3, field4, ...field10+ from mytable我收到此错误消息:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "KSLAP208" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "KSLAP208".
Run Code Online (Sandbox Code Playgroud)

我查看了日志,这是它所说的:

2013-02-08 11:27:30.93 spid55      ***Stack Dump …
Run Code Online (Sandbox Code Playgroud)

sql-server linked-server sql-server-2012

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

Profiler TextData 输出为空

我正在对数据库进行跟踪并将跟踪实时转储到表中。

我进行跟踪的原因是我想查看对数据库执行的所有查询。

+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
| RowNumber | EventClass | TextData |       ApplicationName        | NTUserName | LoginName | CPU | Reads | Writes | Duration  | ClientProcessID | SPID |        StartTime        |         EndTime         | BinaryData |
+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
|     13073 |         15 | NULL     | .Net SqlClient Data Provider | NULL       | reviewer  |   0 |  2172 |      0 | 439776000 |            5096 |  104 | 2012-12-14 12:54:22.893 | 2012-12-14 13:01:42.670 | NULL       |
|     13057 |         15 | NULL     | .Net SqlClient …
Run Code Online (Sandbox Code Playgroud)

sql-server profiler

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

更改列的数据类型会填充事务日志

运行此代码:

ALTER TABLE npidata
ALTER COLUMN npi varchar(20)
Run Code Online (Sandbox Code Playgroud)

给出这个错误:

消息 9002,级别 17,状态 4,第 2 行
数据库“SalesDWH”的事务日志已满。要找出无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列

我正在将NPI列的数据类型从更改varchar(80)varchar(20)

下面的代码给了我同样的错误信息:

insert into npidata1 select * from npidata
Run Code Online (Sandbox Code Playgroud)
  • log_reuse_wait_desc 显示 NOTHING
  • 恢复模式是 SIMPLE
  • autogrowth 被设定为 NONE
  • autoshrink 被设定为 true

我还可以做些什么?我的理解是日志应该在每次变得太大时截断。我究竟做错了什么?

sql-server-2008 sql-server alter-table transaction-log

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

64 位 SQL Server 上的 32 位 ODBC 驱动程序

我无法将 ODBC 64 位驱动程序与在 SQL Server 2012 64 位实例上运行的 SSMS 2012 一起使用。但是,我相信 32 位驱动程序可以工作。

我的问题是我可以使用 SSMS 2005 32 位在 SQL Server 2012 的 64 位实例上使用 ODBC 创建链接服务器吗?我尝试这样做,但是当我单击“确定”以创建链接服务器时,我收到了消息:

索引超出数组范围

我在做什么完全错误,或者有什么方法可以使用 32 位 ODBC 连接创建此链接服务器?

sql-server-2005 sql-server linked-server sql-server-2012

2
推荐指数
1
解决办法
5524
查看次数