对于以下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)
我备份了一个数据库:
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) 我没有看到关于这个主题的任何类似的问题,我不得不研究这个我现在正在做的事情.以为我会发布答案,以防其他人有同样的问题.
我知道我已经在几年前做过这个了,但是我记不起语法了,由于提取了大量关于"批量进口"的帮助文档和文章,我无法在任何地方找到它.
这是我想要做的,但语法不完全正确...请,之前做过这个的人,帮帮我:)
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'.
我理解乐观和悲观锁定*之间的区别.现在有人可以向我解释我何时会使用其中任何一个?
这个问题的答案是否会根据我是否使用存储过程来执行查询而改变?
*但只是为了检查,乐观的意思是"在阅读时不要锁定桌子",悲观意味着"在阅读时锁定桌面".
哪个查询更快?
不存在:
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.
我有两个使用集成安全性的应用程序.一个分配Integrated Security = true连接字符串,另一个分配Integrated Security = SSPI.
是什么区别SSPI,并true在集成安全性的情况下?
从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 Server,如何拆分字符串以便访问项目x?
拿一个字符串"Hello John Smith".如何按空格分割字符串并访问索引1处应该返回"John"的项目?
我想写一个这样的查询:
SELECT o.OrderId, MAX(o.NegotiatedPrice, o.SuggestedPrice)
FROM Order o
Run Code Online (Sandbox Code Playgroud)
但这不是这个MAX功能的工作方式,对吧?它是一个聚合函数,因此它需要一个参数,然后返回所有行的MAX.
有谁知道怎么做我的方式?