如何在 ODBC 中启动事务?具体来说,我碰巧正在处理 SQL Server,但这个问题可以适用于任何数据源。
在本机 T-SQL 中,您发出以下命令:
BEGIN TRANSACTION
--...
COMMIT TRANSACTION
--or ROLLBACK TRANSACTION
Run Code Online (Sandbox Code Playgroud)
在 ADO.net 中,您可以调用:
DbConnection conn = new SqlConnection();
DbTransaction tx = conn.BeginTransaction();
//...
tx.Commit();
//or tx.Rollback();
Run Code Online (Sandbox Code Playgroud)
在 OLE DB 中您可以调用:
IDBInitialize init = new MSDASQL();
IDBCreateSession session = (init as IDBCreateSession).CreateSession();
(session as ITransactionLocal).StartTransaction(ISOLATIONLEVEL_READCOMMITTED, 0, null, null);
//...
(session as ITransactionLocal).Commit();
//or (session as ITransactionLocal).Rollback();
Run Code Online (Sandbox Code Playgroud)
在 ADO 中您可以调用:
Connection conn = new Connection();
conn.BeginTrans();
//...
conn.CommitTrans();
//or conn.RollbackTrans();
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 SQL Server 中创建链接服务器:
--Create the link to server "uranium"
EXEC master.dbo.sp_addlinkedserver
@server = N'uranium',
@srvproduct=N'',
@provider=N'SQLNCLI'
--Add the catch-all login with SQL Server authentication
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'uranium',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'BatteryStaple',
@rmtpassword='Horsecorrect'
Run Code Online (Sandbox Code Playgroud)
它创造良好。但是任何查询链接服务器的尝试,例如:
SELECT * FROM uranium.Periodic.dbo.Users
Run Code Online (Sandbox Code Playgroud)
结果是
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'BatteryStaple'.
Run Code Online (Sandbox Code Playgroud)
除了我知道凭据是正确的:
BatteryStapleHorsecorrect因为当我使用 SQL Server Management Studio 或任何其他能够连接到数据库的技术直接连接时,我可以登录。
sp_addlinkedsrvlogin)tl;博士:为什么
<allow users="?">
Run Code Online (Sandbox Code Playgroud)
在IIS Express上工作,但在IIS上却没有?
我有一个新的asp.net web-forms项目.在Windows 7 IIS Express上本地运行时,我可以通过向web.config 添加拒绝规则来阻止"所有用户"访问该站点:*
web.config中
<configuration>
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这导致我被拒绝访问:
这是有道理的.
我是web.config,我可以使用标记而不是all()标记来阻止对匿名用户的访问:?*
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
因为我没有通过身份验证,我将再次被401未经授权:
这是有道理的.
通过将denyweb.config 更改为allow:我可以允许匿名访问:
<authorization>
<allow users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
现在我被带到了主页:
这是有道理的.
以上适用于IIS Express.但是,当我发布到Windows Server 2012 R2 IIS 7.5时,尝试allow匿名(?)用户不起作用:
这是没有意义的:
而不是: …
我正在尝试使用"ApplicationIntent=readonly"连接字符串来访问 sql server 2012 DB 上的辅助节点。
它仍然命中主节点,不知道为什么。
我正在使用sqljdbc4-4.0罐子
java JDBC 调用:
ResultSet results = null;
PreparedStatement preparedStatement = null;
Connection conn = null;
String SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
Class.forName(SQL_SERVER_DRIVER);
String dbString = "jdbc:sqlserver://*****;applicationIntent=ReadOnly;databaseName=****;user=*****;password=****;";
conn = DriverManager.getConnection(dbString);
preparedStatement = conn.prepareStatement("some_sql");
results = preparedStatement.executeQuery();
Run Code Online (Sandbox Code Playgroud) 我正在执行数百行的简单插入,例如:
INSERT INTO Foo
SELECT * FROM Bar
Run Code Online (Sandbox Code Playgroud)
该表有一些二级索引。禁用这些索引后,查询几乎立即运行。启用二级索引后,查询需要几秒钟的时间才能运行,子树成本相对较高。
问题是对于每个二级索引,数据库执行:
它缓存的位置:
虽然了解为什么SQL Server (2008 R2 SP2) 认为需要这样做可能很有趣,但我真正需要的是一种方法,使在实时服务器中插入 100 行不需要花费 6 秒。
真正非常可怕的部分是,对于每个表假脱机,SQL Server每次都会缓存每个列的值:
这只是烧毁逻辑IO。
当然,我的真实 AuditLog表包含 4M 行。但是我们可以使用空的 AuditLog 表来重现完全相同的运算符,但子树成本很高:
CREATE TABLE [dbo].[AuditLog](
[AuditLogID] [int] IDENTITY(216,1) NOT NULL,
[ChangeDate] [datetime] NOT NULL CONSTRAINT [DF_AuditLog_ChangeDate] DEFAULT (getdate()),
[RowGUID] [uniqueidentifier] NOT NULL,
[ChangeType] [varchar](50) NOT NULL,
[TableName] [varchar](128) NOT NULL, …Run Code Online (Sandbox Code Playgroud) 我正在使用SHCreateItemFromParsingName将路径转换为IShellItem:
IShellItem ParseName(String path)
{
IShellItem shellItem;
HRESULT hr = SHCreateItemFromParsingName(path, null, IShellItem, out shellItem);
if (Failed(hr))
throw new ECOMException(hr);
return shellItem;
}
Run Code Online (Sandbox Code Playgroud)
注意:A
IShellItem于2006年左右推出,旨在为Windows 95时代IShellFolder+pidl构造提供方便的包装。你甚至可以问IShellItem咳嗽了它的基础IShellFolder,并pidl与IParentAndItem.GetParentAndItem接口和方法。
我可以在shell名称空间中找到一些众所周知的位置,并查看它们的绝对解析(SIGDN_DESKTOPABSOLUTEPARSING)和编辑(SIGDN_DESKTOPABSOLUTEEDITING)显示名称:
| Path | Editing | Parsing |
|-------------------|-----------------------|-------------------------------------------------------------------|
| C:\ | "C:\" | "C:\" |
| C:\Windows | "C:\Windows" | "C:\Windows" |
| Desktop …Run Code Online (Sandbox Code Playgroud) 在Delphi VCL项目中,我创建了一个简单TVirtualStringTree的两列.第一列将包含标识Name所表示数据的文本.数据记录还包含状态字段.第二列用于表示使用没有文本的图像(16x16像素)的记录状态.
我已经搜索了演示,但还没有掌握VTV如何显示节点的完整过程,并且还没有成功获得在指定列的节点中显示的图标.
所以我有三个相关的问题:
我看到在OnGetText事件中如何分配文本,但是我应该在哪里分配或更改图像以反映记录中的当前状态?
如何让图像实际显示在列中?
我的图像尺寸有限,还是比图标大?如果是这样,我是否需要更改任何设置以调整每行的高度(如果可能)?
如何设置<textarea>消耗100%的浏览器窗口宽度和高度?
例如,以下内容不起作用:
html, body, textarea {
margin: 0;
padding: 0;
border: 0;
width: 100%;
height: 100%;
}Run Code Online (Sandbox Code Playgroud)
<textarea>Text goes here</textarea>Run Code Online (Sandbox Code Playgroud)
因为它占用的窗口略超过100%,导致出现滚动条:
如何<textarea>消耗100%的空间?
.NET 中是否有可以解析 Uri 的类?
Windows 搜索服务通过使用 URI 注册要爬网的内容。使用ISearchCrawlScopeManager您可以枚举各种根 uri:
csc://{S-1-5-21-397955417-62688126-188441444-1010}/defaultroot://{S-1-5-21-397955417-62688126-188441444-1010}/file:///C:\file:///D:\iehistory://{S-1-5-21-397955417-62688126-188441444-1010}/mapi://{S-1-5-21-397955417-62688126-188441444-1010}/Outlook2003/Inbox/winrt://{S-1-5-21-397955417-62688126-188441444-1010}/不幸的是,.NET Uri类无法解析这些 Uri ( dotNetFiddle ):
Run-time exception (line 8): Invalid URI: The hostname could not be parsed.
Stack Trace:
[System.UriFormatException: Invalid URI: The hostname could not be parsed.]
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
Run Code Online (Sandbox Code Playgroud)
.NET 中是否有可以解析 Uri 的类?
本机 Win32 函数InternetCrackUrl能够正确处理 Uri:
URL_COMPONENTS components;
components.dwStructSize = sizeof(URL_COMPONENTS );
components.dwSchemeLength = DWORD(-1);
components.dwHostNameLength = DWORD(-1); …Run Code Online (Sandbox Code Playgroud)