我有一个当前正在使用 MySQL 的项目,我想将其迁移到 SQL Server(在 Azure 上运行)。我尝试了很多配置组合,但总是得到相同的通用错误消息:
Cannot connect to database [default]
Run Code Online (Sandbox Code Playgroud)
这是我最近的配置尝试:
slick.dbs.default.driver = "com.typesafe.slick.driver.ms.SQLServerDriver"
slick.dbs.default.db.driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
slick.dbs.default.db.url = "jdbc:sqlserver://my_host.database.windows.net:1433;database=my_db"
slick.dbs.default.db.user = "username"
slick.dbs.default.db.password = "password"
slick.dbs.default.db.connectionTimeout="10 seconds"
Run Code Online (Sandbox Code Playgroud)
我有sqljdbc4.jar我的lib/文件夹中。
并将以下内容添加到我的 build.sbt
libraryDependencies += "com.typesafe.slick" %% "slick-extensions" % "3.0.0"
resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/"
Run Code Online (Sandbox Code Playgroud)
编辑:我可以使用 GUI 应用程序从这台机器连接,所以问题不在于任何网络设置。
我正在尝试以本地时间显示日期时间值。默认情况下,Azure SQL 数据库以 UTC 存储日期和时间,没有办法解决这个问题。(从内部部署的 SQL Server 迁移时这很痛苦。)我想以中欧时间显示存储的时间值。
现在当地时间是 11:30 (CET)。UTC 时间是 10:30。
DECLARE @TestTime DATETIME;
SET @TestTime = '2016-11-02 10:30:00'
SELECT @TestTime
--Returns 2016-11-02 10:30:00
SELECT @TestTime AT TIME ZONE 'Central European Standard Time'
--Returns 02 November 2016 10:30:00 +01:00
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式返回 2016-11-02 11:30:00。现在是有趣的部分:
正如这里所建议的:
SELECT convert(DATETIME,@TestTime AT TIME ZONE 'Central European Standard Time',1)
--Returns 2016-11-02 09:30:00 So instead of adding the timezonedifference it subtracts it.
Run Code Online (Sandbox Code Playgroud)
这有效,但让我恶心:
SELECT DATEADD(MINUTE,DATEPART(tz,@TestTime AT TIME ZONE 'Central European Standard Time'),@TestTime)
--Returns 2016-11-02 …Run Code Online (Sandbox Code Playgroud) 我有一个 Azure 帐户,在其中运行 2 个 SQL Azure 数据库。每个数据库都位于同一个“SQL Server”下。
我想添加第三个数据库,但我想为此数据库使用不同的登录名/密码。如果不添加新的“SQL Server”,这可能吗?
我创建了一个临时表,如何使用脚本验证它是否已添加。因此,我正在尝试创建一个脚本,以创建尚未创建的时态表。如果不起作用
IF (OBJECT_ID('[dbo].[CarHistory]') IS NULL)
BEGIN
Print 'Add Temporal table to Car table'
Alter table Car
ADD SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN DEFAULT GETUTCDATE(),
SysEndTime DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN DEFAULT CONVERT(DATETIME2, '9999-12-31 23:59:59.9999999'),
PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
ALTER TABLE dbo.Car SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE=dbo.CarHistory));
END
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息 13597, Level 16, State 2, Line 16 Temporal SYSTEM_TIME period is already defined on table 'dbo.Car' 因为我已经添加了它。
我们目前在 Azure 的 SQL Server 上托管了大约 400 个客户端数据库。最初设置时,没有设置 Active Directory 管理员用户,只有一个服务器管理员,目前所有连接字符串都使用此服务器管理员。如果我向服务器添加 Active Directory 管理员,这会对使用服务器管理员的任何数据库的连接产生任何影响吗?换句话说,服务器管理员是否仍然可以正常工作并且添加 Active Directory 管理员不会断开当前连接到 SQL 服务器的任何用户的连接?
我正在尝试将我的 Flask 应用程序与 Azure 数据库连接,这就是我遇到此错误的时候。我找不到任何关于它的东西,任何帮助将不胜感激。
pypyodbc.connect(
Driver={SQL Server};Server=tcp:******.net,1433;Database=***;UID=***;PWD=***;
)
Run Code Online (Sandbox Code Playgroud) 我们有一个单一的生产数据库[ProdDatabase]上已创建早在2013年在创建时的兼容性级别的Azure的SQL Server实例[ProdDatabase],并[master]为因此设置为100(SQL Server 2008中)。
在过去的几周里,我们成功地将兼容性级别更新[ProdDatabase]为 110、120、130 和现在的 140(最新)。在每个步骤中,我们都创建了一个副本[ProdDatabase]并在[ProdDatabase]. 这一切都运行良好,现在[ProdDatabase]兼容性级别为 140。
该[master]数据库,但是,仍然是在兼容级别100为了保持一致性,我们要更新这个[master]通过调用数据库兼容级别140以及(只alter database [master] set compatibility_level=<110,120,130,140>。
为了将风险降到最低,我们也在考虑[master]逐步更新(即首先是 110,然后是 120,然后是 130,然后是 140)。然而,考虑到它是一个系统数据库,似乎我们不能在副本上“排练”它,看起来我们只需要直接在实时[master]数据库上进行。考虑到它[master]包含登录和数据库元数据,我们有点担心如果更新由于某种原因不起作用,我们可能会以某种方式破坏我们的实时生产应用程序。然而,我们已经在本地安装上对其进行了测试,它似乎工作正常。我们的生产 Web 应用程序从不查询[master]任何内容,但它使用当然在[master]数据库中列出的 SQL 登录名。
我的问题:是否有人能够描述更新[master]Azure SQL 实例上数据库的兼容性级别的“最佳实践”方法?是否有任何[master]我们应该特别注意的陷阱?alter database [master] set compatibility_level=110;如果事情真的发生了,电话会很容易逆转吗?
在特定情况下,我有一个填充了 1070 个项目的数据库表,并且在该过程的某个时刻,我向其中添加了一个名为“Current_Status”的列。因此,所有项目都有一个初始为NULL的新字段。
该表用作队列,对于处理的每一行,我将“Current_Status”字段更新为“已处理”或“未处理”。
为了查看过程进行得如何,我使用以下查询计算了状态仍为NULL的剩余项目:
SELECT COUNT([Current_Status]) FROM Table_Name WHERE [Current_Status] IS NULL
Run Code Online (Sandbox Code Playgroud)
问题是,在前 1000 个项目之后,该查询执行的结果是0,即使我检查并使用SELECT * FROM Table_Name查询显示那里仍有一些状态为NULL 的行。
任何想法可能导致这种情况?
我使用 Azure Data Studio 1.4.5 检查了这种情况。
我创建了一个应该连接到 Azure SQL 数据库的 Azure 函数。
此函数检索保存在应用程序配置中的连接字符串。此连接字符串是 Azure SQL 提供的连接字符串。
在我的 PC 上一切正常,但我已在 Azure 上部署了该功能,但它似乎无法连接到 SQL 数据库(返回常见错误“未设置对象引用...”)。
我已签possibleOutboundIpAddresses入 Azure 函数资源,并已在 Azure SQL 防火墙上允许它们。
此外,我的 SQL 数据库位于带有存储的 Azure VNet 中。
任何的想法?
尝试在 Azure SQL Server 上创建新的 Azure AD 服务器主体(登录名)时,为什么会收到“PROVIDER”附近的错误语法?
我正在关注标题为“使用 SSMS 创建其他 Azure AD 服务器主体(登录) ”的官方 Microsoft 文档,并且我使用的是 SQL Server Management Studio 18.1 版。
按照文档,我已经使用“ Active Directory - Universal with MFA support ”选项成功登录到我的Azure SQL Server,我想添加一个 Active Directory 用户,以便我的同事也可以访问同一台服务器并查看我在该服务器上创建的数据库。如 Microsoft 文档中所述,我打开一个新的查询窗口,并尝试运行以下 SQL 命令:
USE master
GO
CREATE LOGIN [firstname.lastname@example.com] FROM EXTERNAL PROVIDER
GO
Run Code Online (Sandbox Code Playgroud)
但我立即收到以下错误:
Msg 102, Level 15, State 48, Line 3
Incorrect syntax near 'PROVIDER'.
Run Code Online (Sandbox Code Playgroud)