我们正在构建一个最初为 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) 我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。
我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。
我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。
我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx
Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。
但是,我希望您对此提出意见。
是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?
我有一个从 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) 我正在对数据库进行跟踪并将跟踪实时转储到表中。
我进行跟踪的原因是我想查看对数据库执行的所有查询。
+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
| 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) 运行此代码:
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 显示 NOTHINGSIMPLEautogrowth 被设定为 NONEautoshrink 被设定为 true我还可以做些什么?我的理解是日志应该在每次变得太大时截断。我究竟做错了什么?
我无法将 ODBC 64 位驱动程序与在 SQL Server 2012 64 位实例上运行的 SSMS 2012 一起使用。但是,我相信 32 位驱动程序可以工作。
我的问题是我可以使用 SSMS 2005 32 位在 SQL Server 2012 的 64 位实例上使用 ODBC 创建链接服务器吗?我尝试这样做,但是当我单击“确定”以创建链接服务器时,我收到了消息:
索引超出数组范围
我在做什么完全错误,或者有什么方法可以使用 32 位 ODBC 连接创建此链接服务器?