标签: sql-server-2008

添加列 Query With 参数

大家好,我有 1 个带有以下查询语法的问题

 ALTER TABLE table_name
 ADD column_name column-definition;
Run Code Online (Sandbox Code Playgroud)

问题是我们可以使用参数来column_name字段@column_name吗?因为我正在创建由前端提供的列名作为参数的列。例如

ALTER TABLE table_name
ADD @column_name varchar(250);
Run Code Online (Sandbox Code Playgroud)

这是给出错误,所以有什么替代方法吗?

sql-server-2008 alter-table

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

我可以在一页上存储一半的记录,在另一页上存储一半的记录吗?

我正在观看来自http://technet.microsoft.com/en-us/sqlserver/gg313756.aspx 的Paul Randal 的 MCM 视频

从视频的27:11,作者说记录必须保存在一页中,不能在一页上有一半记录,在另一页上有一半记录。这个观点不是我学到的。但是我对此没有信心,因为我的母语不是英语,可能会误解保罗的意见。谁能帮忙解释一下?

提前致谢。

sql-server-2005 sql-server-2008 sql-server

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

如何确定过去特定日期的 SQL Server 数据库的大小?

Microsoft SQL Server 2008 R2 标准版

我想知道的是过去特定日期的数据库大小。我没有备份可以追溯到那么远。当前日志可能会也可能不会回溯足够远。

有没有办法检索这种类型的信息?

sql-server-2008

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

在一个表中的多个字段上使用外键

可能是简单的问题。

对于两张桌子。一对多关系是从 A -> B、TeamID -> Fk_Team 创建的,但是有多个字段需要引用这个关系如何工作。

所以

A                          B
TeamID                     EventID
teamName                   datetime
teamocation                homeTeam
etc                        awayTeam
                           Weather
                           Fk_team 
Run Code Online (Sandbox Code Playgroud)

那么我如何定义 homeTeam 和 awayTeam 都利用 Fk_Team 关​​系并且 homeTeam 和 awayTeam 条目必须存在于 TeamID.teamName 字段中?

sql-server-2008 foreign-key database-design sql-server

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

将不同的行从一个表复制到另一个表

在 SQL Server 中,我可以通过执行以下操作将一个表复制到另一个表中:

Select * into desttable from sourcetable
Run Code Online (Sandbox Code Playgroud)

但是,源表中有重复的行,我只想复制不同的行。我该怎么做呢?

谢谢

sql-server-2008 sql-server

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

如何检查每个单独表的禁用外键关系的完整性?(SQL Server 2008)

我正在移植一个巨大的遗留数据库,许多不同的遗留前端依赖于它。当我完成后,一个新的前端将与所有旧的遗留前端一起运行,减去我针对移植数据库替换的前端。

无论如何,遗留数据库没有定义任何外键关系。我的计划是开始将它们放入,但让它们禁用以支持旧的前端。但是,我想在某种存储过程中使用禁用的外键关系来检查数据库的完整性(我会经常将其作为完整性测试套件的一部分执行)。这是否涉及尝试打开每一个,然后记录错误消息,然后再次将其关闭?有没有一个特殊的命令可以一次性完成这一切?

您需要帮助的任何脚本都会很好,我不擅长 T-SQL。理想情况下,我希望脚本返回一个由表名、记录的主键值和失败记录的外键名称组成的表。

谢谢!

sql-server-2008 foreign-key

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

寻找触发器来更改插入字符串?

我有一个 MSSQL Server 2008 数据库。
我的数据库中有一些表,如下所示:
table1, table2, table3, ....
每个表都有一个 NVARCHAR(50) 字段 ( Name)
现在,我想更改每个 sql 查询在该字段中插入的字符串,
例如:
我们有想要在Name字段中插入“示例文本”的查询。
我想使用 SQL 触发器将其更改为“示例名称”

是否可以使用 sql 触发器?如果是这样,如何?我对 T-SQL 很幼稚
有没有更好的方法可以用 SQL Server 做到这一点?

trigger sql-server-2008 sql-server t-sql

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

有什么办法可以在同一个大表上使用 3x UNION 来加速查询?

假设下面的查询是合法的并且执行成功,有什么办法可以加快速度吗?

SELECT foo from T1 --T1 is a huge (>5e6 rows) table with no indexes
UNION
SELECT bar from T1
UNION
SELECT baz from T1
UNION
SELECT qux from T1
Run Code Online (Sandbox Code Playgroud)

上面显示的四列都是 type nvarchar(128)、非稀疏和可为空的。我使用的是 SQL Server 2008。谢谢!

编辑:提供了更多信息。我无法添加索引,因为它是 Stage 表。另外,删除DISTINCTs; 我完全忘记了这一点。

Phil:我如何将其合并为一个查询?

sql-server-2008 sql-server t-sql union

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

确定 SQL Server 内存要求

我只是在那里遇到了一个问题,SQL Server 数据库的大小占用了相当多的 RAM。

一点背景:

该数据库适用于小型内容管理网站。CMS 是在 ASP 中自定义构建的,其中散布着一些未经优化的查询,但还不错。实际数据库在磁盘上占用 132MB。

现在回到 SQL Server。

在查看服务器选项时,我遇到了内存部分。我注意到它被设置为 2147483647MB,这让我想到将这个值设置为更小的值可能是一种解决问题的方法。

我将其设置为 500MB,这是一个很大的差异。

到目前为止,该网站运行良好,服务器上的内存不再出现问题。

我的问题:

我如何确定将其设置为的最佳值是多少?500MB 低吗?此服务器上将有另一个数据库。不过它会小得多,大约 50MB。

编辑(更多信息)

我应该补充一点,导致我寻找此内存设置的问题是 SQL Server 在需要时没有将内存释放回操作系统。我运行一个旧站点,需要即时编译页面(即没有 bin 文件夹),并且存在一些页面在需要时未编译的问题。服务器出现内存不足错误。

这个特定的服务器有 2GB 的 RAM。

sql-server-2008 memory

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

如何通过查询“fn_dblog”或DBCC LOG('DataBaseName')打印出一个事务的查询SQL文本?

在过去 24 小时内的某个时间点,使用 DB 的几个应用程序之一对客户 SQL Server 2008 (v 9.0 SP4) 进行了一些更改。

它不是特别重要,但如果我可以转储与时间段对应的 SQL 语句,它将代表对这些应用程序如何使用表的有用见解。

我感兴趣的表不会经常更改,因此应用于这些特定表的事务日志的总行数不应非常大。

我看到了“fn_dblog”函数和 DBCC LOG('DataBaseName') 命令,似乎有相当多的相关信息,但我不知道如何进行下一步并让它们生成实际更改的报告.

这篇博文中有一些细节; http://janiceclee.com/tag/fn_dump_dblog/

USE AdventureWorks
    GO
    SELECT [Transaction ID], count(*)
    FROM fn_dblog(DEFAULT, DEFAULT)
    where AllocUnitName LIKE '%Production.TransactionHistory%'--table name
    GROUP BY [Transaction ID]
    HAVING COUNT(*) >= 113443 --(estimated/actual) number of deleted records
Run Code Online (Sandbox Code Playgroud)

但是我没有任何这样的细节,只有表名(如果需要,我可以得到主键)

以及另一篇博客文章,根据表命名使用类似的示例数据; http://www.sqlskills.com/blogs/paul/post/Search-Engine-QA-6-Using-fn_dblog-to-tell-if-a-transaction-is-contained-in-a-backup.aspx

    USE AdventureWorks;

    GO

    SELECT [Current LSN], Operation, [Transaction ID], AllocUnitName FROM fn_dblog (NULL, NULL);

    GO

The log record at that LSN is:

    00000058:00001870:0001  LOP_MODIFY_ROW     0000:00001338  HumanResources.Employee.PK_Employee_EmployeeID

This …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server dbcc

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