大家好,我有 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)
这是给出错误,所以有什么替代方法吗?
我正在观看来自http://technet.microsoft.com/en-us/sqlserver/gg313756.aspx 的Paul Randal 的 MCM 视频
从视频的27:11,作者说记录必须保存在一页中,不能在一页上有一半记录,在另一页上有一半记录。这个观点不是我学到的。但是我对此没有信心,因为我的母语不是英语,可能会误解保罗的意见。谁能帮忙解释一下?
提前致谢。
Microsoft SQL Server 2008 R2 标准版
我想知道的是过去特定日期的数据库大小。我没有备份可以追溯到那么远。当前日志可能会也可能不会回溯足够远。
有没有办法检索这种类型的信息?
可能是简单的问题。
对于两张桌子。一对多关系是从 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 中,我可以通过执行以下操作将一个表复制到另一个表中:
Select * into desttable from sourcetable
Run Code Online (Sandbox Code Playgroud)
但是,源表中有重复的行,我只想复制不同的行。我该怎么做呢?
谢谢
我正在移植一个巨大的遗留数据库,许多不同的遗留前端依赖于它。当我完成后,一个新的前端将与所有旧的遗留前端一起运行,减去我针对移植数据库替换的前端。
无论如何,遗留数据库没有定义任何外键关系。我的计划是开始将它们放入,但让它们禁用以支持旧的前端。但是,我想在某种存储过程中使用禁用的外键关系来检查数据库的完整性(我会经常将其作为完整性测试套件的一部分执行)。这是否涉及尝试打开每一个,然后记录错误消息,然后再次将其关闭?有没有一个特殊的命令可以一次性完成这一切?
您需要帮助的任何脚本都会很好,我不擅长 T-SQL。理想情况下,我希望脚本返回一个由表名、记录的主键值和失败记录的外键名称组成的表。
谢谢!
我有一个 MSSQL Server 2008 数据库。
我的数据库中有一些表,如下所示:
table1, table2, table3, ....
每个表都有一个 NVARCHAR(50) 字段 ( Name)
现在,我想更改每个 sql 查询在该字段中插入的字符串,
例如:
我们有想要在Name字段中插入“示例文本”的查询。
我想使用 SQL 触发器将其更改为“示例名称”
是否可以使用 sql 触发器?如果是这样,如何?我对 T-SQL 很幼稚
有没有更好的方法可以用 SQL Server 做到这一点?
假设下面的查询是合法的并且执行成功,有什么办法可以加快速度吗?
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 数据库的大小占用了相当多的 RAM。
一点背景:
该数据库适用于小型内容管理网站。CMS 是在 ASP 中自定义构建的,其中散布着一些未经优化的查询,但还不错。实际数据库在磁盘上占用 132MB。
现在回到 SQL Server。
在查看服务器选项时,我遇到了内存部分。我注意到它被设置为 2147483647MB,这让我想到将这个值设置为更小的值可能是一种解决问题的方法。
我将其设置为 500MB,这是一个很大的差异。
到目前为止,该网站运行良好,服务器上的内存不再出现问题。
我的问题:
我如何确定将其设置为的最佳值是多少?500MB 低吗?此服务器上将有另一个数据库。不过它会小得多,大约 50MB。
编辑(更多信息)
我应该补充一点,导致我寻找此内存设置的问题是 SQL Server 在需要时没有将内存释放回操作系统。我运行一个旧站点,需要即时编译页面(即没有 bin 文件夹),并且存在一些页面在需要时未编译的问题。服务器出现内存不足错误。
这个特定的服务器有 2GB 的 RAM。
在过去 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 ×10
sql-server ×6
foreign-key ×2
t-sql ×2
alter-table ×1
dbcc ×1
memory ×1
trigger ×1
union ×1