标签: database-connection

持久数据库连接 - 是或否?

我正在使用PHP的PDO层进行项目中的数据访问,我一直在阅读它并发现它对持久数据库连接有很好的内在支持.我想知道何时/是否应该使用它们.我会在CRUD沉重的应用程序中看到性能优势吗?是否存在需要考虑的缺点,可能与安全性有关?

如果对你很重要,我正在使用MySQL 5.x.

persistence pdo database-connection

46
推荐指数
2
解决办法
3万
查看次数

SQL Server连接尝试记录在哪里?

SQL Server是否具有用于尝试连接的外部日志文件或内部表,或者是否将此类信息放在Windows事件日志中?

logging database-connection sql-server-2008

45
推荐指数
2
解决办法
12万
查看次数

SQL Express连接字符串:相对于应用程序位置的mdf文件位置

我在SQL#中使用SQL Express数据库作为单元测试项目的一部分.我的数据库位于:

./Databases/MyUnitTestDB.mdf
Run Code Online (Sandbox Code Playgroud)

我想使用相对路径或变量,app.config而不是将我的连接字符串定义为:

AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf 
Run Code Online (Sandbox Code Playgroud)

我已经看到了使用|DataDirectory|但我认为这只适用于Web应用程序吗?

我想在应用程序配置文件中控制它,因为在生产中应用程序使用托管的sql数据库.

c# sql connection-string database-connection sql-server-express

44
推荐指数
4
解决办法
6万
查看次数

MySQL - 持久连接与连接池

为了避免每次查询需要针对MySQL触发时建立新连接的开销,有两种选择:

  1. 持久连接,其中请求新连接,检查是否已经打开"相同"连接,如果是,则使用它.
  2. 连接池,客户端维护连接池,以便需要使用连接的每个线程将从池中检出一个并在完成后将其返回池中.

因此,如果我希望每秒处理数千个请求的多线程服务器应用程序,并且每个线程需要针对数据库触发查询,那么什么是更好的选择?

根据我的理解,使用持久连接,我的应用程序中的所有线程都将尝试使用与数据库相同的持久连接,因为它们都使用相同的连接.因此,它是跨多个应用程序线程共享的一个连接 - 因此请求将很快在数据库端阻塞.

如果我使用连接池机制,我将让所有应用程序线程共享一个连接池.因此阻塞请求的可能性较小.但是,对于连接池,应用程序线程是否应该等待从池中获取连接,或者它是否应该以循环方式在池中的连接上发送请求,并在数据库上进行排队(如果有)?

mysql multithreading database-connection

44
推荐指数
2
解决办法
4万
查看次数

快速测试OLE DB连接字符串的方法

出于调试目的,我想知道快速测试OLE DB连接字符串的方法.

我找到了这个免费软件,它可以在我的机器上运行,测试成功.

有没有更快的方法,可能从Windows上的命令行?因为大部分时间,客户而不是我都会执行此任务,所以我更喜欢"零安装"方法,这种方法会影响他们的系统.

.net oledb connection-string database-connection

41
推荐指数
4
解决办法
7万
查看次数

如何强制SqlConnection在物理上关闭,同时使用连接池?

我知道如果我实例化一个SqlConnection对象,我真的从连接池中获取连接.当我调用Open()时,它将打开连接.如果我在该SqlConnection对象上调用Close()或Dispose()方法,它将返回到连接池.

但是,这并没有真正告诉我它是否真的关闭,或者我是否仍然有一个与数据库的活动连接.

如何强制SqlConnection在网络级别关闭,或者至少告诉它什么时候关闭?

例:

using(SqlConnection conn = new SqlConnection(DBConnString)) {

   conn.Open();
   SqlCommand cmd = conn.CreateCommand();
   ...
   cmd.ExecuteReader(CommandBehavior.CloseConnection);
   ...
}
Run Code Online (Sandbox Code Playgroud)
  • 首次运行:300毫秒
  • 第二轮:100毫秒
  • 第三次运行:100毫秒
  • 等待很长时间(30分钟)后:300毫秒

如果连接是TRULY关闭,则第二次和第三次运行也应该是300 ms.但我知道这些运行并没有真正关闭连接(我检查了SQL Server的活动监视器).它不需要额外的200ms来执行身份验证/等.

如何强制连接真正关闭?

思路

  • CommandBehavior.CloseConnection有效吗?(显然不是?)
  • 在连接字符串中设置"Max Pool Size = 0"是否有效?(这将是一个愚蠢的解决方案)
  • Dispose()有效吗?

参考

c# sql ado.net database-connection connection-pooling

40
推荐指数
3
解决办法
3万
查看次数

如何使用Java更改数据库连接中的MySQL时区?

MySQL使用时区"GMT + 8"运行,但Tomcat使用"GMT"运行.当我将datetime保存到我的数据库时,一切似乎都没问题,但是当我检查数据库中的datetime值时,我看到了"GMT"值.

此外,当我尝试从数据库中获取值的值时,似乎数据库中的值被视为"GMT + 8",因此Java将值更改为"GMT".

我已经设置了这样的连接URL:

useTimezone=true&serverTimezone=GMT
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

java mysql timezone database-connection

40
推荐指数
2
解决办法
8万
查看次数

使用代码或脚本启用tcp\ip远程连接到sql server express已安装的数据库(查询)

我正在使用我的应用程序部署sql express.我希望该数据库引擎接受远程连接.我知道如何通过启动sql server配置管理器,启用tcp/ip连接,指定端口等来配置该手册.我想知道是否可以从命令行执行相同的操作.

或许我必须在visual studio中创建一个"SQL Server 2008 Server Project".

编辑1

我在这里发布了相同的问题,但我想在已经安装的sql express实例上做同样的事情.看看这里的问题

编辑2

我发现这些链接声称做了类似的事情,但我仍然无法使其发挥作用.

1)http://support.microsoft.com/kb/839980

2)http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/c7d3c3af-2b1e-4273-afe9-0669dcb7bd02/

3)http://www.sql-questions.com/microsoft/SQL-Server/34211977/can-not-connect-to-sql-2008-express-on-same-lan.aspx

4)http://datazulu.com/blog/post/Enable_sql_server_tcp_via_script.aspx


编辑3

正如Krzysztof在他的回答中所说,我需要(以及我所知道的其他需要的东西)

1 - 启用TCP/IP

在此输入图像描述

我已经设法在安装传递参数的SQLExpress的新实例时执行此操作 /TCPENABLED=1.当我在这个例子中安装sql express时.sql express的实例将启用TCP/IP

2 - 在防火墙中打开正确的端口

(我已经完成了这个manualy,但我相信我将能够弄清楚如何用c#来做到这一点)到目前为止,我必须使用这个控制台命令来解决问题:

netsh firewall set portopening protocol = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT
Run Code Online (Sandbox Code Playgroud)

3 - 修改TCP/IP属性启用IP地址

在此输入图像描述

我一直无法弄清楚如何启用IP,更改端口等.我认为这将是更复杂的解决步骤

4 - 在sql server中启用混合模式身份验证

在此输入图像描述

我已经设法在安装SQL Express时执行此操作,传递参数/SECURITYMODE=SQL参考步骤1的链接.

SQL Server Express要求此身份验证类型接受远程连接.

5 - 更改用户(sa)默认passowrd …

configuration cmd database-connection remote-connection sql-server-express

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

为何总是关闭数据库连接?

如果连接到数据库会消耗大量资源,那么为什么要在应用程序中关闭数据库连接,如果必须再次打开它?我是否可以在整个应用程序中全局使用此连接,以便其他类和方法可以重用它?

例如(伪代码):

public class PopulateGridViews()
{
    public SqlConnection conn = new SqlConnection(@"Database:DATABASE");
    conn.Open();

    void PopulateGrid1()
    {
        SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE1");
        cmd.Connection = conn;
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        // Populate Grid1
    }

    void PopulateGrid2()
    {
        SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE2");
        cmd.Connection = conn;
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        // Populate Grid2
    }
}
Run Code Online (Sandbox Code Playgroud)

c# optimization database-connection

36
推荐指数
2
解决办法
4万
查看次数

Tomcat连接池的maxActive与maxIdle有什么区别?

tomcat连接池有一个名为maxActive的设置和一个名为maxIdle的设置我的问题是.

  1. 这两个设置有什么区别?
  2. 什么是真实世界的示例场景,您可能具有与maxIdle不同的maxActive值?

出于某种原因,文档对我没有意义.根据http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html上的文档,apache dbcp和tomact 7 jdbc-pool上都存在maxActive和maxIdle

maxActive(int)可以同时从此池分配的最大活动连接数.默认值为100

maxIdle(int)始终应保留在池中的最大连接数.默认值为maxActive:定期检查100个空闲连接(如果已启用),并且将释放空闲时间超过minEvictableIdleTimeMillis的连接.(另见testWhileIdle)

tomcat database-connection

36
推荐指数
4
解决办法
7万
查看次数