小编Ian*_*oyd的帖子

5
推荐指数
1
解决办法
3905
查看次数

如何在 ODBC 中启动事务?

如何在 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)

ODBC 怎么样?

对于 ODBC,Microsoft 在其页面Transactions in …

sql-server winapi odbc

5
推荐指数
1
解决办法
5509
查看次数

查询链接服务器时登录失败

我正在尝试在 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)

除了我知道凭据是正确的:

  • 登录: BatteryStaple
  • 密码: Horsecorrect

因为当我使用 SQL Server Management Studio 或任何其他能够连接到数据库的技术直接连接时,我可以登录。

在此处输入图片说明

奖励阅读

sql-server linked-server

5
推荐指数
1
解决办法
2万
查看次数

如何允许IIS 7.5上的匿名访问网站?

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上不起作用

以上适用于IIS Express.但是,当我发布到Windows Server 2012 R2 IIS 7.5时,尝试allow匿名(?)用户不起作用:

在此输入图像描述

这是没有意义的:

  • 适用于IIS Express
  • 在IIS 7.5上失败

尝试允许每个人

而不是: …

iis iis-7.5 iis-express

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

SQL Server“应用程序意图=只读”不工作 JDBC

我正在尝试使用"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)

java sql-server jdbc sql-server-2012

5
推荐指数
1
解决办法
6620
查看次数

索引插入期间的多个表假脱机(Eager 假脱机)

我正在执行数百行的简单插入,例如:

INSERT INTO Foo
SELECT * FROM Bar
Run Code Online (Sandbox Code Playgroud)

该表有一些二级索引。禁用这些索引后,查询几乎立即运行。启用二级索引后,查询需要几秒钟的时间才能运行,子树成本相对较高。

问题是对于每个二级索引,数据库执行:

它缓存的位置:

  • 目标表中的所有列(当它只需要它需要的值时)
  • 多次值(而不是一次)

在此输入图像描述

虽然了解为什么SQL Server (2008 R2 SP2) 认为需要这样做可能很有趣,但我真正需要的是一种方法,使在实时服务器中插入 100 行不需要花费 6 秒。

真正非常可怕的部分是,对于每个表假脱机,SQL Server每次都会缓存每个列的值:

在此输入图像描述

这只是烧毁逻辑IO。

  • 如果没有这些有问题的索引更新,60,000 行的完整导入将在一两秒内完成
  • 有了这些索引,完整的导入实际上需要几十分钟

重现步骤

当然,我的真实 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)

t-sql sql-server query-optimization sql-server-2008-r2

5
推荐指数
1
解决办法
1299
查看次数

如何将SHCreateItemFromParsingName与Shell命名空间中的名称一起使用?

我正在使用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)

windows winapi windows-shell

5
推荐指数
1
解决办法
2182
查看次数

如何在TVirtualStringTree列中显示图标或图像?

在Delphi VCL项目中,我创建了一个简单TVirtualStringTree的两列.第一列将包含标识Name所表示数据的文本.数据记录还包含状态字段.第二列用于表示使用没有文本的图像(16x16像素)的记录状态.

我已经搜索了演示,但还没有掌握VTV如何显示节点的完整过程,并且还没有成功获得在指定列的节点中显示的图标.

所以我有三个相关的问题:

  1. 我看到在OnGetText事件中如何分配文本,但是我应该在哪里分配或更改图像以反映记录中的当前状态?

  2. 如何让图像实际显示在列中?

  3. 我的图像尺寸有限,还是比图标大?如果是这样,我是否需要更改任何设置以调整每行的高度(如果可能)?

delphi virtualtreeview tvirtualstringtree

5
推荐指数
1
解决办法
1135
查看次数


解析 .NET 中的 URI

精简版

.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)

c# uri

5
推荐指数
1
解决办法
1212
查看次数