Я пытаюсь создать задание агента SQL, которое выполняет хранимую процедуру каждые 5 минут или около того, но я не в состоянии с частью синтаксиса SQL. Я использую проверку подлинности форм, и мне нужно выбрать всех пользователей, которые не были активны за последние 15 минут, а также были помечены как временные. Для этого я возьму LastActivityDate
из таблицы aspnet_Users
и IsTemp
из таблицы UserProfile
. После выбора мне нужно удалить все следы этого пользователя из моих данных. Ниже приведена основная структура моих таблиц, необходимая для моего вопроса:Удалите несколько записей из разных таблиц с хранимой процедурой SQL
aspnet_Users(uniqueidentifier UserId PK)
aspnet_Membership(uniqueidentifier UserId FK)
UserProfile(int UserProfileID PK, uniqueidentifier aspnetUserID FK, int IsTemp)
UserFriend(int UserFriendID PK, int UserProfileID FK)
Image(int ImageID PK, int UserProfileID FK)
Message(int MessageID, int UserProfileID FK)
Вот что я до сих пор:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CleanUpUserProfiles]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM [UserProfile]
WHERE IsTemp = 1
SELECT *
FROM [aspnet_Users]
WHERE LastActivityDate < DATEADD(mi, -15, CURRENT_TIMESTAMP)
SELECT *
FROM [UserProfile]
WHERE IsTemp = 1
DELETE FROM [Message]
WHERE ??? = @???
DELETE FROM [Image]
DELETE FROM [UserFriend]
DELETE FROM [UserProfile]
DELETE FROM [aspnet_Membership]
DELETE FROM [aspnet_Users]
END
GO
Я знаю, что нужно переменное для хранения выбранных пользователей из aspnet_Users
для того, чтобы знаю, что удалить, но я не знаю, как это сделать. Во-вторых, мне нужно только выбрать пользователей с IsTemp = 1
от UserProfile
. Как включить это в мой оператор select? Я также понимаю, что мне понадобятся две цифры SELECT
. Один выбрать UserID
для использования в удалении UserProfile
, UserFriend
, Image
и Message
, а другой для выбора uniqueidentifier
я буду использовать в aspnet_Users
и aspnet_Membership
. Пожалуйста, имейте в виду, что я не рассматривал SQL намного больше, чем создание базовой хранимой процедуры. Любая помощь очень ценится.
Если кому-то интересно, почему я хочу это сделать ... Я разрешаю пользователям оставаться анонимными, создавая только имя пользователя при входе в мою службу. Эти пользователи будут временными, и если кто-то появится и захочет использовать одно и то же имя пользователя через несколько дней, я не хочу запрещать им это делать. Я также не хочу вешать ненужные данные, чувствую себя грязным.
Необходимо было внести небольшие изменения, поскольку SSMS выдавала ошибку для неправильного типа данных между 'uniqueidentifier' и' int'. В конечном итоге делает отдельный 'SELECT' заявление следующим образом:' ВЫБРАТЬ a.UserID в #UserProfilesToDelete ОТ [UserProfile] \t INNER JOIN [aspnet_Users] B на a.aspUserID = b.UserId \t ГДЕ [Type] = 1 и LastActivityDate
TestWell
@TestWell .. Спасибо, если у вас есть что-то еще, то опубликуйте как новый вопрос. Если бы это помогло, то повысьте пожалуйста. –