如何从ADO.NET中将XACT_ABORT设置为ON(或OFF)?
我已经使用sp_addlinkedserver访问远程机器db现在我在数据库上显式编写查询,如,
从[server\instance] .database.owner.tablename中选择*
有了这个,
如果使用查询我们是否需要使用EXEC发现这些值()来执行,否则我们仍然可以使用nice查询实现的呢?
谢谢大家,
我有一个字段'描述',可以有任何unicode字符的产品描述.如果我搜索包含国际字符的描述,并且具有LIKE条件(搜索的单词没有国际字符),我会得到以下结果:
例如:GEWÜRZTRAMINER是其中一个描述.当我做:
Select * from table where Description LIKE '%GEWURZTRAMINER%', it retrieves the entry.
Run Code Online (Sandbox Code Playgroud)
当我做:
Select * from table where Description LIKE '%GEWURZ%', the entry is not retrieved.
Run Code Online (Sandbox Code Playgroud)
(注意:搜索条件不包括Ü但有U)
有没有办法解决这个问题,以便我可以使用'%GEWURZ%'进行检索?
我试图列出我选择的任何Adventureworks表中的所有列.我可以执行哪些T-sQL语句或存储过程来查看所有列的列表?我想使用我的C#Web应用程序输入一个输入参数= table_name,然后获取所有column_names的列表作为输出.现在我正在尝试执行sp_columns存储过程,但是我不能只使用select和exec组合的一列.有人知道怎么做这个吗?
感谢大家的所有回复,但没有一个答案符合我的要求.让我更多地为您解释我的问题.下面的查询返回我需要的内容.但我的问题是将这个逻辑合并到一个带有输入参数的SP中.所以这是成功的SQL语句:
select col.name from sysobjects obj inner join syscolumns col
on obj.id = col.id
where obj.name = 'AddressType'
order by obj.name
Run Code Online (Sandbox Code Playgroud)
目前我的SP看起来像:
CREATE PROCEDURE [dbo].[getColumnNames]
@TableName VarChar(50)
AS
BEGIN
SET NOCOUNT ON;
SET @TableName = RTRIM(@TableName)
DECLARE @cmd AS NVARCHAR(max)
SET @cmd = N'SELECT col.name from sysobjects obj ' +
'inner join syscolumns col on obj.id = col.id ' +
'where obj.name = ' + @TableName
EXEC sp_executesql @cmd
END
Run Code Online (Sandbox Code Playgroud)
但我按上述方式运行
exec getColumnNames 'AddressType'
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
Invalid column name …Run Code Online (Sandbox Code Playgroud) 使用SQL Server 2008.
示例表:
CREATE table dbo.blobtest
(id int primary key not null,
name nvarchar(200) not null,
data varbinary(max) null)
Run Code Online (Sandbox Code Playgroud)
示例查询:
select id, name,
cast((case when data is null then 0 else 1 end) as bit) as DataExists
from dbo.blobtest
Run Code Online (Sandbox Code Playgroud)
现在,查询需要返回一个"DataExists"列,如果blob为null,则返回0,否则返回1.
这一切都很好,但我想知道它的效率如何.即,SQL服务器是否需要将整个blob读入其内存,或者是否有一些优化,以便它只进行足够的读取以确定blob是否为空?
(FWIW,对于此示例,sp_tableoption"超出行的大值类型"选项设置为OFF).
有一些问题想出这一个.
select*,(从chicken_photo选择top1 chicken_nr,其中鸡=代码顺序为[sort])作为Chicken的照片
代码是Table Chicken中的一列
基本上得到这只鸡的封面照片.
为了更清楚,我希望它从表Chicken返回多行.但只有一个来自chicken_photo的条目.
var q = from chicken in data.chickens
join photos in data.chicken_photos
on chicken.Code equals photos.chicken
where chicken.Lang==lang && chicken.photographer_nr == nr
group chicken by new {chicken.photographer,photos.Photograph_Nr,chicken.Title,chicken.Code}
Run Code Online (Sandbox Code Playgroud) 请原谅我,因为我是一个sql noob.我正在尝试使用以下内容进行插入,但是我对撇号有问题.我有很多要插入的记录,但很多都有同样的问题.有没有逃脱它们的方法?
INSERT INTO [dbo].[tb_Chefs] ([ChefHotelID], [HotelID], [ChefID],
[Position], [GroupID])
VALUES(N'b809a86e-f7f2-45b2-a240-0049f51509d7' ,N'14481', N'624',
N'Chef d'atelier', N'331')
GO
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
有两种方法可以创建约束,
方法A:
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
Run Code Online (Sandbox Code Playgroud)
方法B:
CREATE UNIQUE NONCLUSTERED INDEX
<namingconventionconstraint> ON dbo.<tablename>
(
<columnname>
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
但是,似乎需要使用依赖于它们的创建方式(Drop约束与drop index)的方法来删除这些约束.有没有办法确定创建约束的方法,而不是尝试方法并查看它是否失败?我知道你可以让SQL Server为你创建一个drop脚本,但我正在寻找某种查询.
我在表中有2列.第1列代表不同公司的名称,第2列显示产品数量.
COL 1 COL 2
CompA 2323
CompB 2320
CompC 1999
CompD 1598
CompE 1400...so on
Run Code Online (Sandbox Code Playgroud)
我想要做的是显示前10行显示前10个公司名称及其在desc顺序中的计数.然后我想比较第10个公司数和第11个公司数.如果匹配,则显示第11个公司名称及其计数.如果第10个公司计数与第11个公司计数不匹配,则仅显示前10个记录.
我只读访问权限,因此无法在表中更新或插入新记录.
如何才能做到这一点?
给定以下声明,其中在表DATA中的给定时间(TIME)处为用户(USER)注册任意事件:
CREATE TABLE DATA
(
"USER" Varchar(20),
"TIME" Time
);
INSERT INTO DATA ("USER", "TIME") VALUES ('Martin', '14:58:00.000');
INSERT INTO DATA ("USER", "TIME") VALUES ('Martin', '15:02:11.000');
INSERT INTO DATA ("USER", "TIME") VALUES ('Martin', '15:48:44.000');
INSERT INTO DATA ("USER", "TIME") VALUES ('Marion', '08:45:01.000');
INSERT INTO DATA ("USER", "TIME") VALUES ('Marion', '15:01:01.000');
INSERT INTO DATA ("USER", "TIME") VALUES ('Marion', '15:03:48.000');
Run Code Online (Sandbox Code Playgroud)
在给定的一小时内找到每个用户的事件数量是微不足道的:
select
"USER",
extract(hour from "TIME") as "Hour",
count(*)
from
DATA
group by
"USER",
extract(hour from "TIME")
;
Run Code Online (Sandbox Code Playgroud)
结果当然是:
USER |Hour|COUNT
------+----+----- …Run Code Online (Sandbox Code Playgroud) sql ×7
sql-server ×6
t-sql ×4
.net ×1
ado.net ×1
c# ×1
constraints ×1
exec ×1
linq ×1
oracle ×1
string ×1
transactions ×1