标签: sql-server

哪些列通常会成为好的索引?

作为" 什么是索引以及如何使用它们来优化我的数据库中的查询? " 的后续内容,我试图了解索引,哪些列是好的索引候选者?专门针对MS SQL数据库?

经过一些谷歌搜索,我读过的所有内容都表明,通常增加和唯一的列会产生一个很好的索引(比如MySQL的auto_increment),我理解这一点,但我使用的是MS SQL,我使用GUID作为主键,所以看来索引不会使GUID列受益......

database sql-server indexing optimization database-design

90
推荐指数
5
解决办法
7万
查看次数

什么是简单的命令行程序或脚本来备份SQL Server数据库?

我在内部服务器上执行数据库备份时过于宽松.

是否有一个简单的命令行程序,我可以用它来备份SQL Server 2005中的某些数据库?或者有一个简单的VBScript?

sql-server backup scripting command-line

90
推荐指数
6
解决办法
22万
查看次数

动态SQL - EXEC(@SQL)与EXEC SP_EXECUTESQL(@SQL)

在SQL Server中使用存储过程执行动态SQL命令的真实优点和缺点是什么?

EXEC (@SQL)
Run Code Online (Sandbox Code Playgroud)

EXEC SP_EXECUTESQL @SQL
Run Code Online (Sandbox Code Playgroud)

sql sql-server dynamic

90
推荐指数
3
解决办法
20万
查看次数

如何在单个SELECT语句中使用多个公用表表达式?

我正在简化复杂的select语句,所以我想我会使用常用的表表达式.

声明一个cte工作正常.

WITH cte1 AS (
    SELECT * from cdr.Location
    )

select * from cte1 
Run Code Online (Sandbox Code Playgroud)

是否可以在同一个SELECT中声明和使用多个cte?

即这个sql给出了一个错误

WITH cte1 as (
    SELECT * from cdr.Location
)

WITH cte2 as (
    SELECT * from cdr.Location
)

select * from cte1    
union     
select * from cte2
Run Code Online (Sandbox Code Playgroud)

错误是

Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'WITH'.
Msg 319, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'with'. If this statement is a common table …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server common-table-expression sql-server-2008

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

SQL Server查询的最大大小?IN子句?有更好的方法吗?

可能重复:
T-SQL WHERE col IN(...)

SQL Server查询的最大大小是多少?(字符数)

IN子句的最大大小?我想我看到有关于Oracle有1000项限制的东西,但你可以用ANDing 2 INs来解决这个问题.SQL Server中的类似问题?

更新 那么,如果我需要从另一个系统(非关系数据库)中获取1000个GUID并对SQL Server执行"JOIN in code",那么最佳方法是什么?是否将1000个GUID列表提交给IN子句?还是有另一种技术可以更有效地运作?

我没有测试过这个,但我想知道我是否可以将GUID作为XML文档提交.例如

<guids>
    <guid>809674df-1c22-46eb-bf9a-33dc78beb44a</guid>
    <guid>257f537f-9c6b-4f14-a90c-ee613b4287f3</guid>
</guids>
Run Code Online (Sandbox Code Playgroud)

然后对Doc和Table做一些XQuery JOIN.效率低于1000项IN条款?

sql t-sql sql-server limits

90
推荐指数
4
解决办法
17万
查看次数

为什么我得到"过程期望'ntext/nchar/nvarchar'类型的参数'@statement'." 当我尝试使用sp_executesql?

为什么我会收到此错误

Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.
Run Code Online (Sandbox Code Playgroud)

当我尝试使用sp_executesql?

sql t-sql sql-server dynamic-sql

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

用于保存百分比值的适当数据类型?

保持百分比值从0.00%到100.00%的最佳数据类型是什么?

sql-server types sqldatatypes

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

当前执行的程序名称

是否可以在MS SQL Server中获取当前存储过程的名称?可能有任何系统变量或功能GETDATE()吗?

t-sql sql-server stored-procedures sql-server-2008

90
推荐指数
4
解决办法
6万
查看次数

SQL Server数据库还原错误:指定的强制转换无效.(SqlManagerUI)

我使用SQL Server 2008 R2 Standard(版本10.50.1600.1)作为我的生产网站,使用SQL Server Express版本和Advanced Services(v10.50.1600.1)作为数据库.

几天后我的SQL Server崩溃了,我不得不在我的localhost上安装一个新的2008 R2 Express版本.当我恢复从Express版本中获取的一些旧版本时,它工作正常,但是当我尝试.bak从生产服务器中恢复的文件中恢复数据库时,它会导致以下错误:

错误:指定的演员表无效.(SqlManagerUI)

当我尝试使用命令恢复数据库时

Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
Run Code Online (Sandbox Code Playgroud)

它会产生不同的错误

消息3154,级别16,状态4,行1
备份集保存除现有"发布"数据库之外的数据库的备份.
消息3013,级别16,状态1,行1
RESTORE DATABASE异常终止.

我已经交叉检查了版本.它们似乎都与我匹配,如下图所示

以前我能够将数据库从标准版恢复到快速版,但现在它失败了.我删除了数据库并尝试重新创建它.那也失败了.

我不确定我做错了什么.我很感激这方面的帮助

问题已解决,因为.bak文件似乎已损坏.当我用不同的文件尝试它时,它工作.

sql-server database-restore sql-server-2008

90
推荐指数
4
解决办法
40万
查看次数

未解析的对象引用[INFORMATION_SCHEMA].[TABLES]

我创建了一个访问[INFORMATION_SCHEMA].[TABLES]视图的UDF :

CREATE FUNCTION [dbo].[CountTables]
(
    @name sysname
)
RETURNS INT
AS
BEGIN
    RETURN
    (
        SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name
    );
END
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,视图的模式和名称都标有警告:

SQL71502:函数:[dbo].[CountTables]有一个未解析的对象[INFORMATION_SCHEMA]的引用.[TABLES].

我仍然可以毫无问题地发布数据库项目,并且UDF似乎确实正确运行.IntelliSense为我填充了视图的名称,因此它似乎没有问题.

我也尝试将实现更改为使用sys.objects而不是使用此视图,但我也对此视图给出了相同的警告.

我该如何解决此警告?

sql t-sql sql-server sql-server-data-tools

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