标签: sql-server

C#等效的SQL Server数据类型

对于以下SQL Server数据类型,C#中相应的数据类型是什么?

精确的数字

bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money
Run Code Online (Sandbox Code Playgroud)

近似数字

float
real
Run Code Online (Sandbox Code Playgroud)

日期和时间

date
datetimeoffset
datetime2
smalldatetime
datetime
time
Run Code Online (Sandbox Code Playgroud)

字符串

char
varchar
text
Run Code Online (Sandbox Code Playgroud)

Unicode字符串

nchar
nvarchar
ntext
Run Code Online (Sandbox Code Playgroud)

二进制字符串

binary
varbinary
image
Run Code Online (Sandbox Code Playgroud)

其他数据类型

cursor
timestamp
hierarchyid
uniqueidentifier
sql_variant
xml
table
Run Code Online (Sandbox Code Playgroud)

(来源:MSDN)

.net c# sql-server

551
推荐指数
5
解决办法
44万
查看次数

SQL Server:数据库陷入"恢复"状态

我备份了一个数据库:

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
Run Code Online (Sandbox Code Playgroud)

然后尝试恢复它:

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database
Run Code Online (Sandbox Code Playgroud)

现在数据库仍处于恢复状态.

有些人认为这是因为备份中没有日志文件,需要使用以下方式前滚:

RESTORE DATABASE MyDatabase
WITH RECOVERY 
Run Code Online (Sandbox Code Playgroud)

当然,除此之外,失败:

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

确切地说,在灾难性的情况下你想要的是一种无法恢复的恢复.


备份包含数据和日志文件:

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   =============== …
Run Code Online (Sandbox Code Playgroud)

sql-server backup restore

549
推荐指数
15
解决办法
87万
查看次数

如何在SQL Server VARCHAR/NVARCHAR字符串中插入换行符

我没有看到关于这个主题的任何类似的问题,我不得不研究这个我现在正在做的事情.以为我会发布答案,以防其他人有同样的问题.

sql sql-server line-breaks

530
推荐指数
9
解决办法
94万
查看次数

如何在不重复声明的"INSERT INTO dbo.Blah"部分的情况下插入多行?

我知道我已经在几年前做过这个了,但是我记不起语法了,由于提取了大量关于"批量进口"的帮助文档和文章,我无法在任何地方找到它.

这是我想要做的,但语法不完全正确...请,之前做过这个的人,帮帮我:)

INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
    (124, 'Jonny'),
    (125, 'Sally')
Run Code Online (Sandbox Code Playgroud)

我知道这接近正确的语法.我可能在那里需要"BULK"这个词,或者其他东西,我不记得了.任何的想法?

我需要这个SQL Server 2005数据库.我试过这段代码,但无济于事:

DECLARE @blah TABLE
(
    ID INT NOT NULL PRIMARY KEY,
    Name VARCHAR(100) NOT NULL
)

INSERT INTO @blah (ID, Name)
    VALUES (123, 'Timmy')
    VALUES (124, 'Jonny')
    VALUES (125, 'Sally')

SELECT * FROM @blah
Run Code Online (Sandbox Code Playgroud)

我越来越 Incorrect syntax near the keyword 'VALUES'.

t-sql sql-server sql-server-2005 insert

518
推荐指数
12
解决办法
75万
查看次数

乐观与悲观锁定

我理解乐观和悲观锁定*之间的区别.现在有人可以向我解释我何时会使用其中任何一个?

这个问题的答案是否会根据我是否使用存储过程来执行查询而改变?

*但只是为了检查,乐观的意思是"在阅读时不要锁定桌子",悲观意味着"在阅读时锁定桌面".

sql-server locking optimistic-locking pessimistic-locking

510
推荐指数
12
解决办法
29万
查看次数

不存在而不是存在

哪个查询更快?

不存在:

SELECT ProductID, ProductName 
FROM Northwind..Products p
WHERE NOT EXISTS (
    SELECT 1 
    FROM Northwind..[Order Details] od 
    WHERE p.ProductId = od.ProductId)
Run Code Online (Sandbox Code Playgroud)

或者不是:

SELECT ProductID, ProductName 
FROM Northwind..Products p
WHERE p.ProductID NOT IN (
    SELECT ProductID 
    FROM Northwind..[Order Details])
Run Code Online (Sandbox Code Playgroud)

查询执行计划表明他们都做同样的事情.如果是这种情况,这是推荐的形式?

这基于NorthWind数据库.

[编辑]

刚刚找到这篇有用的文章:http: //weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx

我想我会坚持使用NOT EXISTS.

sql sql-server notin

507
推荐指数
9
解决办法
138万
查看次数

Integrated Security = True和Integrated Security = SSPI有什么区别?

我有两个使用集成安全性的应用程序.一个分配Integrated Security = true连接字符串,另一个分配Integrated Security = SSPI.

是什么区别SSPI,并true在集成安全性的情况下?

sql-server security connection-string database-security

502
推荐指数
8
解决办法
57万
查看次数

删除SQL Server中datetime时间部分的最佳方法

从SQL Server中的datetime字段中删除时间部分时,哪种方法提供了最佳性能?

a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)

要么

b) select cast(convert(char(11), getdate(), 113) as datetime)
Run Code Online (Sandbox Code Playgroud)

第二种方法确实发送了更多的字节,但这可能没有转换速度那么重要.

两者似乎都非常快,但在处理数十万或更多行时速度可能会有所不同?

另外,是否有可能有更好的方法来摆脱SQL中日期时间的时间部分?

sql t-sql sql-server datetime date

501
推荐指数
8
解决办法
73万
查看次数

如何拆分字符串以便我可以访问项目x?

使用SQL Server,如何拆分字符串以便访问项目x?

拿一个字符串"Hello John Smith".如何按空格分割字符串并访问索引1处应该返回"John"的项目?

sql t-sql sql-server split

480
推荐指数
17
解决办法
82万
查看次数

SQL Server中是否有一个Max函数,它在.NET中采用Math.Max这两个值?

我想写一个这样的查询:

SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o
Run Code Online (Sandbox Code Playgroud)

但这不是这个MAX功能的工作方式,对吧?它是一个聚合函数,因此它需要一个参数,然后返回所有行的MAX.

有谁知道怎么做我的方式?

sql sql-server max

457
推荐指数
17
解决办法
42万
查看次数