Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
ms_windows_ms_sql:nuget_replace_package_with_same_version [2022/01/10 09:40] – [Решение] adminms_windows_ms_sql:nuget_replace_package_with_same_version [2022/01/10 09:46] (current) admin
Line 5: Line 5:
 ====== Решение ====== ====== Решение ======
 Строго говоря - серверы Nuget не разрешают заменять уже загруженные версии пакетов, а предполагает, что исправленные пакеты будут заливаться с новыми версиями - https://docs.microsoft.com/en-us/azure/devops/artifacts/artifacts-key-concepts?view=azure-devops \\ Строго говоря - серверы Nuget не разрешают заменять уже загруженные версии пакетов, а предполагает, что исправленные пакеты будут заливаться с новыми версиями - https://docs.microsoft.com/en-us/azure/devops/artifacts/artifacts-key-concepts?view=azure-devops \\
-Даже если пакет был удален с помощью nuget delete - он будет все равно доступен для скачивания, хотя и не будет отображаться в интерфейсе. \\ +Даже если пакет был удален с помощью **nuget delete** - он будет все равно доступен для скачивания, хотя и не будет отображаться в интерфейсе. \\ 
-Однако, есть [[https://stackoverflow.com/a/21933415|хирургический способ обойти это ограничение]] - удалить пакет (все его версии) в БД сервера Nuget. \\+Однако, есть [[https://stackoverflow.com/a/21933415|хирургический способ обойти это ограничение]] - удалить пакет (все его версии) в БД сервера Nuget. Или вот - [[https://gist.github.com/grenade/4a8b6edcd10308a5882f|более продвинутые варианты скриптов]], удаляющие пакеты по маске, или конкретные версии\\ 
 + 
 +===== Скрипт для удаления всех версий заданного пакета nuget =====
 <code>DECLARE @PackageRegistrationKey int <code>DECLARE @PackageRegistrationKey int
 SELECT @PackageRegistrationKey = [Key] SELECT @PackageRegistrationKey = [Key]
Line 49: Line 51:
 COMMIT TRANSACTION</code> COMMIT TRANSACTION</code>
  
 +===== Скрипт для удаления пакетов nuget, имена которых начинаются с заданной строки =====
 +<code>-- Delete packages with ids that start with a specific string
 +DECLARE @PackageRegistrationKeys table([Key] int)
 +INSERT INTO @PackageRegistrationKeys
 +SELECT [Key] FROM [NuGetGallery].[dbo].[PackageRegistrations]
 +WHERE [Id] LIKE 'Example.Nasty.Package.%'
  
 +BEGIN TRANSACTION
 +DELETE pf
 + FROM [NuGetGallery].[dbo].[PackageFrameworks] pf
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pf.[Package_Key] = p.[Key]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE pa
 + FROM [NuGetGallery].[dbo].[PackageAuthors] pa
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pa.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE gs
 + FROM [NuGetGallery].[dbo].[GallerySettings] gs
 + JOIN [NuGetGallery].[dbo].[PackageStatistics] ps ON gs.[DownloadStatsLastAggregatedId] = ps.[Key]
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE ps
 + FROM [NuGetGallery].[dbo].[PackageStatistics] ps
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE pd
 + FROM [NuGetGallery].[dbo].[PackageDependencies] pd
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pd.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE
 + FROM [NuGetGallery].[dbo].[Packages]
 + WHERE [PackageRegistrationKey] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE por
 + FROM [NuGetGallery].[dbo].[PackageOwnerRequests] por
 + JOIN [NuGetGallery].[dbo].[PackageRegistrations] pr ON pr.[Key] = por.[PackageRegistrationKey]
 + WHERE pr.[Key] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE pro
 + FROM [NuGetGallery].[dbo].[PackageRegistrationOwners] pro
 + JOIN [NuGetGallery].[dbo].[PackageRegistrations] pr ON pr.[Key] = pro.[PackageRegistrationKey]
 + WHERE pr.[Key] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +DELETE FROM [NuGetGallery].[dbo].[PackageRegistrations]
 + WHERE [Key] IN (SELECT [Key] FROM @PackageRegistrationKeys)
 +COMMIT TRANSACTION</code>
 +
 +===== Скрипт для удаления конкретной версии пакета nuget =====
 +<code>-- Delete a specific version of a package with a specific package id
 +DECLARE @PackageKey int
 +SELECT @PackageKey = p.[Key]
 + FROM [Packages] p
 + JOIN [PackageRegistrations] pr ON pr.[Key] = p.[PackageRegistrationKey]
 + WHERE pr.[Id] = 'Example.Nasty.Package'
 + AND [Version] = '9.9.9'
 +
 +BEGIN TRANSACTION
 +DELETE pf
 + FROM [NuGetGallery].[dbo].[PackageFrameworks] pf
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pf.[Package_Key] = p.[Key]
 + WHERE p.[Key] = @PackageKey
 +DELETE pa
 + FROM [NuGetGallery].[dbo].[PackageAuthors] pa
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pa.[PackageKey] = p.[Key]
 + WHERE p.[Key] = @PackageKey
 +DELETE gs
 + FROM [NuGetGallery].[dbo].[GallerySettings] gs
 + JOIN [NuGetGallery].[dbo].[PackageStatistics] ps ON gs.[DownloadStatsLastAggregatedId] = ps.[Key]
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE p.[Key] = @PackageKey
 +DELETE ps
 + FROM [NuGetGallery].[dbo].[PackageStatistics] ps
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE p.[Key] = @PackageKey
 +DELETE pd
 + FROM [NuGetGallery].[dbo].[PackageDependencies] pd
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pd.[PackageKey] = p.[Key]
 + WHERE p.[Key] = @PackageKey
 +DELETE
 + FROM [NuGetGallery].[dbo].[Packages]
 + WHERE [Key] = @PackageKey
 +COMMIT TRANSACTION</code>
 +
 +===== Скрипт для удаления всех версий пакета nuget =====
 +<code>-- Delete all versions of a package with a specific package id
 +DECLARE @PackageRegistrationKey int
 +SELECT @PackageRegistrationKey = [Key]
 + FROM [PackageRegistrations]
 + WHERE [Id] = 'Example.Nasty.Package'
 +
 +BEGIN TRANSACTION
 +DELETE pf
 + FROM [NuGetGallery].[dbo].[PackageFrameworks] pf
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pf.[Package_Key] = p.[Key]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE pa
 + FROM [NuGetGallery].[dbo].[PackageAuthors] pa
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pa.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE gs
 + FROM [NuGetGallery].[dbo].[GallerySettings] gs
 + JOIN [NuGetGallery].[dbo].[PackageStatistics] ps ON gs.[DownloadStatsLastAggregatedId] = ps.[Key]
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE ps
 + FROM [NuGetGallery].[dbo].[PackageStatistics] ps
 + JOIN [NuGetGallery].[dbo].[Packages] p ON ps.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE pd
 + FROM [NuGetGallery].[dbo].[PackageDependencies] pd
 + JOIN [NuGetGallery].[dbo].[Packages] p ON pd.[PackageKey] = p.[Key]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE
 + FROM [NuGetGallery].[dbo].[Packages]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE por
 + FROM [NuGetGallery].[dbo].[PackageOwnerRequests] por
 + JOIN [NuGetGallery].[dbo].[PackageRegistrations] pr ON pr.[Key] = por.[PackageRegistrationKey]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE pro
 + FROM [NuGetGallery].[dbo].[PackageRegistrationOwners] pro
 + JOIN [NuGetGallery].[dbo].[PackageRegistrations] pr ON pr.[Key] = pro.[PackageRegistrationKey]
 + WHERE [PackageRegistrationKey] = @PackageRegistrationKey
 +DELETE FROM [NuGetGallery].[dbo].[PackageRegistrations]
 + WHERE [Key] = @PackageRegistrationKey
 +COMMIT TRANSACTION</code>
  • ms_windows_ms_sql/nuget_replace_package_with_same_version.txt
  • Last modified: 2022/01/10 09:46
  • by admin