我正在使用该SqlBulkCopy对象将数百万个生成的行插入到数据库中.唯一的问题是我插入的表有一个标识列.我已经尝试设置SqlBulkCopyOptionsto SqlBulkCopyOptions.KeepIdentity并将标识列设置为0's,DbNull.Value和null.其中没有一个有效.我觉得我错过了一些非常简单的事情,如果有人能够启发我会很棒.谢谢!
编辑为了澄清,我没有在DataTable我导入中设置的标识值.我希望它们作为导入的一部分生成.
编辑2
这是我用来创建基础SqlBulkCopy对象的代码.
SqlBulkCopy sbc = GetBulkCopy(SqlBulkCopyOptions.KeepIdentity);
sbc.DestinationTableName = LOOKUP_TABLE;
private static SqlBulkCopy GetBulkCopy(SqlBulkCopyOptions options =
SqlBulkCopyOptions.Default)
{
Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/RSWifi");
string connString =
cfg.ConnectionStrings.ConnectionStrings["WifiData"].ConnectionString;
return new SqlBulkCopy(connString, options);
}
Run Code Online (Sandbox Code Playgroud) 我在下面突出显示了一个字节数组,如何将其插入SQL Server数据库Varbinary列?
byte[] arraytoinsert = new byte[10]{0,1,2,3,4,5,6,7,8,9};
string sql =
string.format
(
"INSERT INTO mssqltable (varbinarycolumn) VALUES ({0});",WHATTODOHERE
);
Run Code Online (Sandbox Code Playgroud)
先谢谢你们!
我正在使用MS SQL 2005,我想检查两个日期是否相等,但忽略了时间部分.
我知道我可以使用DATEDIFF,但我担心它可能会很慢 - 这个SP在DB中被大量使用!
有什么建议?
编辑:大卫安德烈斯的评论:
"比较"不仅包括"平等"让我意识到我没有让我的问题足够清楚 - 我实际上只是在检查是否平等,就是这样.
这一年是2009年,SQL Server没有CREATE或ALTER/REPLACE.这就是我所做的.
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME = 'SynchronizeRemoteCatalog'
AND ROUTINE_SCHEMA = 'dbo'
AND ROUTINE_TYPE = 'PROCEDURE')
EXEC ('DROP PROCEDURE dbo.SynchronizeRemoteCatalog')
CREATE PROCEDURE dbo.SynchronizeRemoteCatalog
AS BEGIN
-- body
END
Run Code Online (Sandbox Code Playgroud)
对于触发器,您必须依赖于专有系统视图.
在此期间,这是最受欢迎的惯例吗?
编辑:正如n8wrl建议的那样,官方消息表明此功能不是高优先级.因此问题.
我有2个表:用户和角色,我有一个表将这些表连接在一起.连接表中唯一的东西是链接2个表的ID.
我该怎么称呼这张桌子?我从来没有真正看到过这个很好的命名惯例.
我以前见过的约定:
例如:
Users:
Id
Name
Roles:
Id
Name
TableThatJoinsTheTwo:
Id
UserId
RoleId
Run Code Online (Sandbox Code Playgroud) 我正在寻找T-SQL代码来列出SQL Server中所有数据库中的所有表(至少在SS2005和SS2008中;最好也适用于SS2000).然而,问题是,我想要一个结果集.这排除了Pinal Dave的优秀答案:
sp_msforeachdb 'select "?" AS db, * from [?].sys.tables'
Run Code Online (Sandbox Code Playgroud)
上面的存储过程为每个数据库生成一个结果集,如果你在像SSMS这样可以显示多个结果集的IDE中,这很好.但是,我想要一个结果集,因为我想要一个本质上是"查找"工具的查询:如果我添加一个像这样的子句,WHERE tablename like '%accounts'它会告诉我在哪里可以找到我的BillAccounts,ClientAccounts和VendorAccounts表,无论它们驻留在哪个数据库中在.
到目前为止,Remus的回答看起来最有趣.我发布了一个版本的修改版本,包括数据库名称和示例过滤器子句,而不是将其作为答案发布并将其授予自己.看起来Remus会在这一点上获得答案!
declare @sql nvarchar(max);
set @sql = N'select b.name as "DB", a.name collate Latin1_General_CI_AI as "Table", object_id, schema_id, cast(1 as int) as database_id from master.sys.tables a join sys.databases b on database_id=1 where a.name like ''account%''';
select @sql = @sql + N' union all select b.name as "DB", a.name collate Latin1_General_CI_AI, object_id, schema_id, ' + cast(database_id as …Run Code Online (Sandbox Code Playgroud) 今天我遇到了一个旧表,其中一个名为"Created"的日期时间列允许空值.现在,我想要更改它,使其为NOT NULL,并且还包含一个约束以添加默认值(getdate()).
到目前为止,我已经得到了以下脚本,只要我事先清理了所有空值,它就可以正常工作:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
Run Code Online (Sandbox Code Playgroud)
有没有办法在ALTER语句中同时指定默认值?
我意识到临时表是会话/连接绑定的,不可见或可从会话/连接访问.
我有一个长期运行的存储过程,在各个阶段创建临时表.
有没有办法可以看到当前临时表的列表?我需要什么特权才能这样做?
或者,
有没有办法可以看到正在运行的存储过程中执行的特定SQL语句?该过程作为SQL Server中的计划作业运行.
我正在使用SQL Server 2000.
谢谢你的指导.
使用T-SQL,我将如何获取varchar列的最后3个字符?
所以列文本是IDS_ENUM_Change_262147_190我需要的190
使用dapper,我如何插入C# List数据库.以前没有dapper我使用下面的代码将List值插入数据库.
try
{
connection.Open();
for (int i = 0; i < processList.Count; i++)
{
string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@Id, @st_Time, @ed_Time, @td_Time)";
command = new SqlCommand(processQuery, connection);
command.Parameters.Add("Id", SqlDbType.Int).Value = processList[i].ID;
command.Parameters.Add("st_Time", SqlDbType.DateTime).Value = processList[i].ST_TIME;
command.Parameters.Add("ed_Time", SqlDbType.DateTime).Value = processList[i].ED_TIME;
command.Parameters.Add("td_Time", SqlDbType.DateTime2).Value = processList[i].TD_TIME;
dataReader.Close();
dataReader = command.ExecuteReader();
}
connection.Close();
}
catch (SqlException ex)
{
//--Handle Exception
}
Run Code Online (Sandbox Code Playgroud)
我熟悉使用dapper获取数据,但这是我第一次尝试使用插入查询.
我尝试了以下代码,使用Exceute链接查询但坚持循环; 我认为使用dapper工具,不需要循环语句.
connection.Execute(processQuery ... …Run Code Online (Sandbox Code Playgroud) sql-server ×10
sql ×6
t-sql ×3
c# ×2
alter-column ×1
alter-table ×1
arrays ×1
dapper ×1
metadata ×1
sqlbulkcopy ×1
temp-tables ×1