我试图在SQL Azure中使用数据库.我已经安装了SQL Server 2008.我可以登录SQL Azure并且可以使用master数据库.但我不能使用其他数据库,我在对象资源管理器中看不到任何东西.它显示了这个错误:
"USE statement is not supported to switch between databases. Use a new connection to connect to a different Database."
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用其他数据库?
我们正在研究迁移到云模型和Microsoft Azure PaaS平台.
我们当前的数据层是使用LINQ to SQL编写的.它是否与SQL Azure兼容?
我在我的应用程序中使用SQL Azure数据库进行EF迁移.在我手动删除SQL Azure中的表之前,它工作正常.现在,当我发布我的应用程序时,未在SQL Azure中创建删除表.这是我得到的错误.
Cannot find the object "dbo.TableName" because it does not exist
or you do not have permissions.
Run Code Online (Sandbox Code Playgroud)
我觉得我在数据库和模型之间造成了一些不一致.
我正在使用自动迁移.
我喜欢使用SQL Management Studio报告"顶级表的磁盘使用情况"来查看占用数据库空间的内容.我可以在SQL Azure中使用什么等效查询来查看
在SQL事件探查器中,我可以看到"顶级表的磁盘使用情况"报告通常运行此命令:
begin try
SELECT TOP 1000
(row_number() over(order by (a1.reserved + ISNULL(a4.reserved,0)) desc))%2 as l1,
a3.name AS [schemaname],
a2.name AS [tablename],
a1.rows as row_count,
(a1.reserved + ISNULL(a4.reserved,0))* 8 AS reserved,
a1.data * 8 AS data,
(CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 AS index_size,
(CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8 AS …Run Code Online (Sandbox Code Playgroud) 我需要将一些数据插入临时表.
我有一些像有条件基于列Salary,Code.
如何为基于条件的列创建表?我不想用
SELECT INTO #tempTable
这是代码:
DECLARE @sql NVARCHAR(MAX)
,@sqlSelect NVARCHAR(MAX) = ''
,@sqlFrom NVARCHAR(MAX) =''
CREATE TABLE #myTempTable (Id INT, DeptId INT, DeptName VARCHAR(100))
SET @sqlSelect ='INSERT INTO #myTempTable
SELECT EMP.Id, EMP.DeptId, EMP.DeptName'
SET @sqlFrom =' FROM dbo.EMPLOYEE AS EMP'
IF (someCondition)
BEGIN
SET @sqlSelect = @sqlSelect +', EMP.Salary, EMP.Code'
END
SET @sql = @sqlSelect +@sqlFrom
EXEC sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)
关于我能做得更好的任何帮助/建议?
更新:
最初我使用时SELECT INTO #TempTable没有指定任何列,因为SQL Azure不支持,我决定使用INSERT INTO.但不确定如何在已定义的结构中添加动态列.它完全动态的SQL :(
sql sql-server sql-server-2008 azure-storage azure-sql-database
我知道无法针对azure数据库运行SQL事件探查器.我最近了解到,SQL分析器实际上只是SQL Server隐含的功能的前端,即SQL分析器实际上没有进行任何捕获,它只是启动和停止SQL服务器实际生成的跟踪,并且可以启动,使用T-SQL语句暂停和停止跟踪.
我不认为有任何类型的直接访问azure数据库所在的文件系统,所以如果可以开始跟踪,则需要找到一种方法将该跟踪放在某处.是否可以使用直接T-SQL捕获Windows Azure数据库中的跟踪,或者跟踪功能在azure中的SQL数据库上完全无法使用?
sql-server azure sql-server-profiler sql-server-2012 azure-sql-database
创建SQL Azure服务器时,我们会获得一个对所有数据库具有完全访问权限的超级用户.我们想创建更多这些用户,但不太确定如何.
我们查看了以下文章:http: //msdn.microsoft.com/en-us/library/azure/ee336235.aspx
它允许我们通过以下方式创建新的登录:
-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
Run Code Online (Sandbox Code Playgroud)
然后我们可以添加dbmanager角色和loginmanager角色:
-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
CREATE USER login1User FROM LOGIN login1;
EXEC sp_addrolemember 'dbmanager', 'login1User';
EXEC sp_addrolemember 'loginmanager', 'login1User';
Run Code Online (Sandbox Code Playgroud)
新用户现在可以连接到我们的SQL Azure服务器并查看所有数据库.但是,用户无法连接到各个数据库.解决方法是创建映射到每个数据库中的新登录的用户,并授予该用户db_owner权限,但这很麻烦并且需要维护.
是否有一种在SQL Azure中创建另一个sysadmin用户的简单方法?
我有以下两种关系:
Game(id, name, year)
Devs(pid, gid, role)
Run Code Online (Sandbox Code Playgroud)
Game.id是主键,Devs.gid是Game.id的外键.
在我之前发表的一篇文章中,另一位用户非常友好地帮助我创建了一个查询,该查询可以找到大多数开发者制作该游戏的所有游戏.他的回答使用了WITH语句,我对这些并不十分熟悉,因为我只用了几周时间学习SQL.这是工作查询:
WITH GamesDevs (GameName, DevsCount)
AS
(
SELECT Game.name AS GameName, count(DISTINCT Devs.pid) AS DevsCount
FROM Game, Devs
WHERE Devs.gid=Game.id
GROUP BY Devs.gid, Game.name
)
SELECT * FROM GamesDevs WHERE GamesDevs.DevsCount = (SELECT MAX(DevsCount) FROM GamesDevs)
Run Code Online (Sandbox Code Playgroud)
为了更熟悉SQL,我试图使用子查询而不是WITH语句重写此查询.我一直在使用这个Oracle文档来帮助我解决这个问题.我尝试重写这样的查询:
SELECT *
FROM (SELECT Game.name AS GameName, count(DISTINCT Devs.pid) AS DevsCount
FROM Game, Devs
WHERE Devs.gid=Game.id
GROUP BY Devs.gid, Game.name) GamesDevs
WHERE GamesDevs.DevsCount = (SELECT MAX(DevsCount) FROM GamesDevs)
Run Code Online (Sandbox Code Playgroud)
据我所知,这两个查询应该是相同的.但是,当我尝试运行第二个查询时,我收到错误 …
我有一个解决方案,需要针对SQL Server 2014 和 Microsoft Azure SQL数据库V12.
在我的项目设置中,如果我将目标平台设置为Azure,我无法发布到SQL Server - 我收到此错误:
指定Microsoft Azure SQL数据库v12作为目标平台的项目无法发布到SQL Server 2014.
如果我将目标平台设置为SQL Server 2014并尝试发布到Azure数据库,则会出现反向错误.
有没有办法发布到两个平台,而不必每次都更改项目设置?
请注意,我不是要尝试迁移.我需要用我的脚本支持这两种数据库.
我从Azure数据库复制了连接字符串,如下所示:
我默认看到Azure数据库连接字符串有 Pooling=False
Server = tcp:{your_server} .database.windows.net,1433; Data Source = ra-labs-01.database.windows.net; Initial Catalog = {your_database}; Persist Security Info = False; User ID = {your_username} ; Password = {your_password}; Pooling = False; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False;连接超时= 30;
这让我有点困惑,因为我目前的理解Pooling=False是不推荐的.
因此,默认情况下,连接到Azure的字符串会禁用连接池,还是因为我已将数据库放入弹性池?