在 SQL Server Management Studio 中创建的视图,但在“视图”部分中不可见

问题描述 投票:0回答:5

我在 SQL Server Management Studio 18 中创建了一个视图,我收到以下消息: “命令成功完成。”我猜这意味着视图已经创建。但是,我在对象资源管理器中的数据库的视图部分看不到视图。

我确认视图已通过再次运行查询创建,但我收到一个错误消息,指出该对象已存在。

这是我用来创建视图的代码:

    GO 
    CREATE VIEW VIEW_1 as SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations, SUM(cast(vac.new_vaccinations as INT)) OVER (PARTITION BY dea.location ORDER BY dea.location,dea.date) AS rolling_new_vax 
    FROM [Portfolio Project _1]..['covid vaccinations$'] vac JOIN [Portfolio Project _1]..['covid deaths$'] dea 
    ON vac.location =dea.location AND vac.date = dea.date 
    WHERE dea.continent IS NOT NULL AND dea.location = 'Canada'
sql view ssms
5个回答
3
投票

我知道这不是最有趣的答案,但我在同一个指导项目中遇到了同样的错误。我保存文件然后关闭 SSMS,重新打开文件,删除创建视图语句,重新输入语句,执行查询,刷新 views 文件夹,它起作用了。


1
投票

您必须确保查询是在 PortfolioProject 中完成的,如“UserEE”所说。我建议你从 USE 函数开始...... 试试这个:

USE PortfolioProject
GO
CREATE VIEW PercentPopulationVaccinated AS
Select dea.location, 
       dea.date, 
       dea.population, 
       vacc.new_vaccinations,
       SUM(CAST(vacc.new_vaccinations AS int)) 
            OVER (PARTITION BY dea.location ORDER BY location, dea.date) AS cummulative_people_vaccinated
FROM PortfolioProject..[CovidDeaths.Africa] dea
JOIN PortfolioProject..[CovidVaccinations.Africa] vacc
    ON dea.location = vacc.location
    AND dea.date = vacc.date

0
投票

如果您添加带有视图名称的过滤器,它会显示吗?

尝试使用此代码查看数据库中的视图

SELECT 
OBJECT_SCHEMA_NAME(o.object_id) schema_name,o.name
FROM
sys.objects as o
WHERE
o.type = 'V';

0
投票

您必须确保所做的查询是针对数据库 PortfolioProject 的。我创建了一个新的查询文件(右键单击 PortfolioProject-> 新查询 -> 复制并粘贴在上一个文件中完成的所有工作)。执行查询。这应该为正确的数据库创建视图。

我存储文件的数据库称为 PortfolioProject。根据您的数据库名称添加查询。


0
投票

解决方法如下: 在对象资源管理器上方的左上角有一个可用数据库的下拉选项,单击下拉菜单并选择您的项目,如果您的情况应该是 covid,然后运行创建视图查询,它就会运行。 因为您的可用数据库设置为 master 或其他一些,所以视图不显示在您的项目视图中。 祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.